首页 > 其他分享 >24、Go语言中的OOP思想

24、Go语言中的OOP思想

时间:2023-09-25 23:44:51浏览次数:37  
标签:24 struct s3 s2 Person OOP Go type name

1、是什么?

OOP:面向对象

Go语言的解构体嵌套
	1、模拟集成性:is - a
		type A struct {
			field
		}
		type B struct {
			A // 匿名字段
		}
	这种方式就会存在变量提升
	2、模拟聚合关系:has - a
		type C struct {
			field
		}
		type D struct {
			c C // 聚合关系
		}
	这种方式就需要访问结构体变量来设置相应的值

2、代码示例

/**
 * @author ly (个人博客:https://www.cnblogs.com/ybbit)
 * @date 2023/9/25  23:17
 * @tags 喜欢就去努力的争取
 */
package main

import "fmt"

func main() {
	p1 := Person{name: "张三", age: 18}
	fmt.Println(p1)

	s1 := Student{Person: Person{name: "ly", age: 20}, school: "北京大学", name: "小明"}
	fmt.Println(s1)

	var s2 Student
	s2.Person.name = "李四"
	s2.Person.age = 22
	s2.school = "清华大学"
	s2.name = "小花"
	fmt.Println(s2)

	var s3 Student
	s3.Person.name = "王五"
	s3.age = 23
	s3.school = "武汉大学"
	s3.name = "小张"
	fmt.Println(s3)
}

type Person struct {
	name string
	age  int
}

type Student struct {
	Person
	school string
	name   string
}

image

标签:24,struct,s3,s2,Person,OOP,Go,type,name
From: https://www.cnblogs.com/ybbit/p/17729157.html

相关文章

  • abc246F - typewriter
    F-typewriter直接容斥即可,每次选出它们的并集。#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<queue>#definefo(i,a,b)for(int(i)=(a);(i)<=(b);(i)++)#definefd(i,b,a)for(int(i)=(b);(i)>=(a);(i)-......
  • 随想录Day5|242. 有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
    随想录Day5|242.有效的字母异位词、349.两个数组的交集、202.快乐数、1.两数之和 242.有效的字母异位词文章&视频讲解给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。1......
  • Hadoop是什么? Hadoop是一个由Apache开发的开源分布式计算框架,它能够处理大规模数据并
    Hadoop是什么?Hadoop是一个由Apache开发的开源分布式计算框架,它能够处理大规模数据并行处理任务,支持大规模数据存储和处理。Hadoop的核心组件包括分布式文件系统HDFS和分布式计算框架MapReduce,它们使得Hadoop可以在廉价的硬件上并行地处理大量数据。Hadoop还包括很多相关的项目和子......
  • [AGC024E] Sequence Growing Hard
    SequenceGrowingHard不难发现设合法的条件为第k位后,需满足\(k\in[1,n)\)\(A_{i,k+1}\leqA_{i+1,k}\)或k=n。对于连续相等的一段,在任意位置放得到的A_{i+1}相同需去重。以上两种方式体现为,在末尾放x,放一段不降序列,再在末尾放x,再放一段不降序列。以此类推。所......
  • 使用 Go 和 ADB 启动 Android 应用程序
    在移动应用程序开发中,有时我们需要自动启动Android应用程序以执行测试、截屏或其他自动化任务。本文将介绍如何使用Go编写一个程序,通过Android调试桥(ADB)来启动指定的Android应用程序。我们将提供完整的Go代码示例以及相应的说明。准备工作安装Go编程语言。你可以从Go......
  • Go - directives
    Aftercreatingsqlfilesunderdirectorymigrations,theaboveerrordisappeared: ......
  • Learn Git in 30 days—— 第 24 天:使用 GitHub 远端仓库 - 入门篇
    写的非常好的一个Git系列文章,强烈推荐原文链接:https://github.com/doggy8088/Learn-Git-in-30-days/tree/master/zh-cn GitHub是目前全世界最多人采用的Git线上管理平台,他包含了完整的Git远端仓库实作,还有完整的议题追踪机制与报表,更有成千上万的开源码项目都在GitHub......
  • Hadoop环境搭建
    前言  Hadoop是一个开源的、可运行与Linux集群上的分布式计算平台,用户可借助Hadoop存有基础环境的配置(虚拟机安装、Linux安装等),Hadoop集群搭建,配置和测试。二、Linux系统安装1.环境准备Centos7镜像文件(mini)Centos7下载链接:https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.20......
  • Go每日一库之22:go-cmp
    简介我们时常有比较两个值是否相等的需求,最直接的方式就是使用==操作符,其实==的细节远比你想象的多,我在深入理解Go之==中有详细介绍,有兴趣去看看。但是直接用==,一个最明显的弊端就是对于指针,只有两个指针指向同一个对象时,它们才相等,不能进行递归比较。为此,reflect包提供了一个D......
  • Hadoop集群搭建(完全分布式)
    一,Hadoop集群简介1.1Hadoop集群整体概述Hadoop集群包括两个集群:HDFS集群、YARN集群两个集群逻辑上分离、通常物理上在一起两个集群都是标准的主从架构集群Hadoop两种集群内容:逻辑上分离,物理上合并的理解:逻辑上分离:两个集群互相之间没有依赖、互不影响物理上合并:某些......