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

分类: 计算机技术
推荐阅读:
Rust中r#的含义 在Rust中,如果需要使用Rust关键字作为变量名、函数名、模块名等标识符,可以在关键字前面加上前缀 r#,这样编译器就会将其解析为标识符而非关键字。这个前缀可以用于任何Rust关键字。
Golang中如何使用go test进行单元测试 单元测试的意义在这里就不多说了;本文将示范如何在Go语言环境下使用go test进行简单的单元测试。
Python爬取国外可用的代理IP 这是作者曾经在某个程序中写的一个python模块,其作用是爬取国外的一个免费代理IP网站,获得免费的代理IP。
Python 使用tld库获取复杂URL的顶级域名 我们会碰到各种各样的URL链接,比如:www.a.com/ b.com.cn/ a.b.c.com.cn a.com/b.com Python有内置的库可以识别一些简单的URL,但是像a.b.c.com.cn这样却无能为力。我们需要一个强大的第三方库来实现提取顶级域名。
Python set()函数 在 Python 中,set() 函数用于创建一个无序不重复元素集合。可以使用一个可迭代对象作为参数,例如列表、元组、字符串等。set() 函数会返回一个新的集合,其中包含传递给函数的唯一元素。
requests中的超时(timeout)设定和捕获异常 为防止服务器不能及时响应,大部分发至外部服务器的请求都应该带着 timeout 参数。在默认情况下,除非显式指定了 timeout 值,requests 是不会自动进行超时处理的。如果没有 timeout,你的代码可能会挂起若干分钟甚至更长时间。