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

分类: 计算机技术
推荐阅读:
Python memoryview()函数 memoryview() 函数是一个内置函数,它返回一个memoryview对象,该对象可以用于在 Python 中访问二进制数据。
Qt在Windows11下的视觉效果 作者更新到Windows11了,来看看Qt在Windows11下的视觉效果;变化比较明显的是窗口,PushButton控件和输入框控件;
Rust env宏的用法和示例 在 Rust 中,env宏用于在编译时检查环境变量;该宏在编译时获取指定变量的值,返回一个&str类型,如果环境变量未定义,则会产生编译错误。
Python判断文本的相似度 在Python中,有多种方法可以判断文本的相似度,比如余弦相似度、Jaccard相似度;本文使用余弦相似度来计算两段文本的相似程度。
WHOIS协议Python和Golang的实现 WHOIS协议是一个非常简单的Internet信息查询协议;在RFC812文档中有定义,先向服务器的TCP 43端口建立一个连接,发送要查询的域名关键字并以回车换行结尾,然后接收服务器返回信息,服务器输出完毕后会立即断开连接。
Pyside6.QtWidgets.QWidget详细教程 QWidget从窗口系统接收鼠标、键盘和其它事件,并在屏幕上绘制自己;通常它是矩形的,拥有一个标题栏和一个空白框架;