Golang中的结构体组合

在Go语言里,没有面向对象这个概念,自然就没有继承,但它支持结构体组合;你可以通过在结构体内嵌套结构体实现组合;

package main

type PersionInfo struct{
	firstname 	string
	lastname	string
	age			int
}
func (p *PersionInfo)fullname()string{
	return p.firstname+" "+p.lastname
}

type Manager struct{
	*PersionInfo
	Level		int
} 
func main(){
	
	m := Manager{
		PersionInfo:&PersionInfo{"aaa","bbb",666},
		Level:9,
		}
	println(m.PersionInfo.fullname())
	println(m.fullname())
	
}

Manager结构体有一个PersionInfo类型的字段,没有定义字段名;

实际上编译器会赋予它字段名,这里为PersionInfo,你可以通过这个字段进行访问;

println(m.PersionInfo.fullname())println(m.fullname())的输出一样。

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/golang-composition.html

分类: 计算机技术
推荐阅读:
Golang实现获取文件或文件夹的详细信息 golang可通过使用os.Stat()来获取文件或文件夹的详细信息。
Rust 宏编程 Rust 的宏编程是一种强大的元编程技术,允许您在编译时生成代码,创建自定义语法,以及进行各种代码转换。在 Rust 中,标准宏是内置于 Rust 标准库中的宏。这些宏是 Rust 语言提供的一部分,可直接在任何 Rust 代码中使用,无需额外的导入或引入其他依赖。
在C语言中如何表示无穷大 在C语言中,可以使用预定义的常量INFINITY来表示正无穷大。
Linux显示使用内存最多的十个进程 在Linux系统下,你可以使用一条命令显示当前系统使用内存最多的十个进程:
查询Linux系统是哪个发行版 在Linux系统下,如果你想知道当前系统是哪一个发行版,你可以使用一条命令实现查询:
Python实现线性搜索(linear search) 比如说我有数组data,1000个元素,要从里面找x;线性搜索,就是从头找到尾,速度最慢,但是适用性最广。