非常类似于C语言,Golang中的一个结构体(struct)就是一个字段的集合。
1. Golang定义结构体很简单:
type XXX struct {
......
}
访问结构体的变量,直接用点号“.”连接。来看个简单的例子:
package main
import "fmt"
type person struct {
Name string
Age int
Gender string
}
func main() {
fmt.Println(person{"Tom", 22, "male"})
var Jerry person
Jerry.Name = "Jerry"
Jerry.Age = 21
Jerry.Gender = "male"
fmt.Println(Jerry)
}
#输出:
{Tom 22 male}
{Jerry 21 male}
2. 不得不说的指针
提到Golang的结构体,就不得不提到指针,又是很类似C语言的,&取地址,*取内容。
首先,Golang没有指针运算。结构体字段可以通过结构体指针来访问,通过指针间接的访问是透明的。 非结构体没有指针运算?留个小小疑问自己探索吧。
package main
import "fmt"
type person struct {
Name string
Age int
Gender string
}
func main() {
L := person{"Li Lei", 22, "male"}
fmt.Println(L)
H := &L
H.Name = "Han Meimei"
H.Gender = "female"
fmt.Println(L)
}
#输出:
{Li Lei 22 male}
{Han Meimei 22 female}看明白了吗?H拿到了L的地址,H直接操作L的内容...于是LL变成了HMM 
3. 结构体文法:
通过结构体字段的值作为列表来新分配一个结构体。 特殊的前缀 & 构造了指向结构体文法的指针。 上面的例子已经简单提到了。
package main
import "fmt"
type person struct {
Name string
Age int
Gender string
}
func main() {
Lilei := person{"Li Lei", 14, "male"}
Hmm := &person{"Han Meimei", 14, "female"}
Jim := person{Name:"Jim", Gender: "uncertain"}
gato := person{Name:"Guo"}
fmt.Println(Lilei, Hmm, Jim, gato)
}
#输出:
{Li Lei 14 male} &{Han Meimei 14 female} {Jim 0 uncertain} { Guo }结构体可以仅仅给部分成员赋值。
来源:CSDN
作者:9命怪猫
链接:https://blog.csdn.net/972301/article/details/49421227