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

分类: 计算机技术
推荐阅读:
Pythone内置函数 Python 内置函数是 Python 解释器提供的函数库,这些函数可以直接使用,无需导入任何模块。
Golang多个返回值有什么作用 在 Go 语言中,函数可以返回多个值,这是一项非常实用的特性,其作用如下:
PySide6使用Qt Designer创建的UI 在本文中,你将学会使用Qt Designer画出UI,并在Python中使用它;
Golang中的数组切片 数组切片和数组在Go语言中不是同一种数据类型,但他们很相似,区别是数组只能是固定长度,而数组切片可灵活的改变长度。
Python setattr()函数 在 Python 中,setattr() 函数用于设置对象的属性值。它接受三个参数:要设置属性的对象、属性名称和属性值。如果对象已经存在具有相同名称的属性,则该属性的值将被覆盖。
Python locals()函数 在 Python 中,locals() 是一个内置函数,用于返回当前作用域中的所有局部变量的字典。在函数内部,locals() 返回该函数的局部变量。在模块级别上,locals() 返回全局变量。