Golang结构体struct的使用(结构体嵌套, 匿名结构体等)
转自: https://studygolang.com/articles/11313
golang中是没有class的,但是有一个结构体struct,有点类似,他没有像java,c++中继承的概念,但是他有一个类似功能的结构嵌入
简单的结构体声明和使用
type User struct{
name string
age int
address string
}
user:= User{name:"测试",age:10}
user.address="广州市"
f.Println(user)
匿名结构体
person:= struct {//匿名结构
name string
age int
}{name:"匿名",age:1}
f.Println("person:",person)
函数中结构体作为参数,如果不是用结构指针,函数内参数属性的改变不影响原来对象的属性的改变
//值拷贝,不改变原来的User对象值
func us(user User){
user.name="值拷贝";
user.age=12
user.address="珠海市"
f.Println("user in us:",user)
}
//声明调用
user:=User{}
us(user)
//指针,改变原来的User对象值
func use(user *User){
user.name="指针"
user.age=15
user.address="深圳市"
f.Println("user in use:",*user)
}
//声明调用
user:=User{}
use(&user)
go语言中虽然没有继承,但是可以结构内嵌,达到类似继承的效果
type Info struct {
sex int
name string
age int
address string
}
type User struct{
like string
Info
}
type Admin struct {
unlike string
Info
}
user:= User{}
user.sex=0
user.address="广州市"
user.like="游戏"
f.Println(user)
admin:= Admin{Info:Info{sex:1}}//还可以这样声明一些属性值,因为Info是结构体,匿名,所以需要这样声明
admin.address="广州市"
admin.unlike="游戏"
f.Println(admin)
如果嵌入结构的字段和外部结构的字段相同,那么,想要修改嵌入结构的字段值需要加上外部结构中声明的嵌入结构名称
type Info struct {
sex int
name string
age int
address string
}
type User struct{
like string
sex int
Info
}
user:=User{}
user.sex=1//这里修改的外部结构User里面的sex字段值
user.Info.sex=2//这里修改的是嵌入结构Info的sex字段值
分类:
go
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2018-07-22 python线程join