Go 语言通过使用如下的格式来声明一个结构体:
type 结构体名称 struct {
结构体成员
}
举个例子:
// 声明结构体 User
type User struct {
id int
name string
sex byte
age int
}
■ ■■■■
下面可以通过这三种方式初始化:顺序初始化、指定成员初始化以及指针变量的方式初始化。
通过代码演示:
package main
import "fmt"
// 声明结构体 User
type User struct {
id int
name string
sex byte
age int
}
func main() {
// 顺序初始化:
// 每个成员必须初始化
var u1 User = User{111, "zhangsan", 'M', 25}
fmt.Println(u1)
// 指定成员初始化:
// 没有初始化的成员,自动赋值为对应类型的零值
u2 := User{name: "zhangsan"}
fmt.Println(u2)
// 指针变量的方式初始化:
// u3 存放的是User地址
var u3 *User = &User{111, "zhangsan", 'M', 25}
fmt.Printf("u3=%p\n", u3)
fmt.Println((*u3).name)
fmt.Println(u3.name)
// 指针变量的方式初始化:
// 自动推导+指定成员初始化
u4 := &User{name: "mike"}
fmt.Printf("%T\n", u4)
fmt.Println(u4)
}
打印结果如下:
{111 zhangsan 77 25}
{0 zhangsan 0 0}
u3=0xc0000c04b0
zhangsan
zhangsan
*main.User
&{0 mike 0 0}