Go的结构体是类字段属性的集合。能把数据分组在一起,类似一个对象,里面有很多定义的属性。
package main
import "fmt"
// 这个person结构体有name和age字段
type person struct {
name string
age int
}
// newPerson函数会用给定的name构建一个person
func newPerson(name string) *person {
p := person{name: name}
p.age = 42
return &p
}
func main() {
// 简写语法可以构建person
fmt.Println(person{"Bob", 20})
// print
// {Bob 20}
// 可以字段名字写出来
fmt.Println(person{name: "Alice", age: 30})
// print
// {Alice 30}
// 没有赋值的字段给零值(默认值)
fmt.Println(person{name: "Fred"})
// print
// {Fred 0}
// &获取指针
fmt.Println(&person{name: "Ann", age: 40})
// print
// &{Ann 40}
// 构建过程写在函数里是惯用的方式
fmt.Println(newPerson("Jon"))
// print
// &{Jon 42}
// 用点.访问字段
s := person{name: "Sean", age: 50}
fmt.Println(s.name)
// print
// Sean
// 点可以与指针一起使用,指针会字段解除引用
sp := &s
fmt.Println(sp.age)
// print
// 50
// 结构体里的字段值可以更改
sp.age = 51
fmt.Println(sp.age)
// print
// 51
// 匿名结构体
dog := struct {
name string
isGood bool
}{
"Rex",
true,
}
fmt.Println(dog)
// print
// {Rex true}
}