Golang结构体struct的使用

Link_Biao · · 23271 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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字段值

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:Link_Biao

查看原文:Golang结构体struct的使用

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

23271 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传