golang学习-结构体

发布时间:2024年01月12日
1、定义

使用type 和struct 关键字来定义结构体,是值类型

格式如下:

type 类型名 struct {

? ? ? ? 字段名 类型

? ? ? ? 字段名 类型

? ? ? ? ...

}

2、实例化

1、var 结构体实例 结构体类型? ? var p1 Person??

2、使用new关键字? ?var p2 = new(Person)

3、使用&对结构体进行取地址操作 p3:=&Person{}

第二种和第三种返回的是指针类型

4、键值对初始化

p4:= Person {

? ? ? ? name :"李四",

}

5、&取内存地址

p5:=&Person{

? ? ? ? name :"李四",

}

6、简写 不指名key 直接写value

p6:=&Person{

? ? ? ? "张三

"

}

?结构体首字母大写表示结构体共有,在其他包里可以使用。首字母小写表示结构体私有,只能在这个包里使用。

在golang中 支持对结构体指针直接使用.来访问结构体的成员? ?p2.name = "张三",其在底层是(*p2).name="张三"

3、结构体的匿名字段

结构体允许成员字段声明时没有字段名只有类型,这种没有名字的字段叫匿名字段。匿名字段默认采用类型名作为字段名,因此类型不能重复。

type Person {

? ? ? ? string

? ? ? ? int

}

4、结构体嵌套

当访问结构体成员时会先在结构体中查找该字段,找不到再去匿名结构体中查找、

type User struct {
	Username string
	Age      int
	Address  Address
}
type Address struct {
	Name  string
	phone string
}

func main() {
	var u = new(User)
	u.Username = "张三"
	u.Age = 20
	u.Address.Name = "不会"
	u.Address.phone = "1233"
	// fmt.Printf("%#v", u)
	fmt.Println(&u.Address)
}

?golang中使用结构体嵌套来实现继承。

文章来源:https://blog.csdn.net/qq_36770474/article/details/135530440
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。