int 0 flow 0.0 bool false string nil nil
未初始化的结构体
package main
import "fmt"
type Person struct {
id, age int
name, email string
}
func main() {
var tom Person
fmt.Printf("tom: %v", tom)
}
PS E:\TEXT\test> go run .
tom: {0 0 }
PS E:\TEXT\test>
使用键值对对结构体进行初始化
package main
import "fmt"
type Person struct {
id, age int
name, email string
}
func main() {
kite := Person{
id: 1,
name: "kite",
age: 20,
email: "kite@gmail.com",
}
fmt.Printf("tom: %v", kite)
}
PS E:\TEXT\test> go run .
tom: {1 20 kite kite@gmail.com}
PS E:\TEXT\test>
使用值的列表初始化
package main
import "fmt"
type Person struct {
id, age int
name, email string
}
func main() {
kite := Person{
1,
20,
"kite",
"kite@gmail.com",
}
fmt.Printf("tom: %v", kite)
}
PS E:\TEXT\test> go run .
tom: {1 20 kite kite@gmail.com}
PS E:\TEXT\test>
注意:
- 必须初始化结构体的所有字段。
- 初始值的填充顺序必须与字段在结构体中的声明顺序一致。
- 该方式不能和键值初始化方式混用。
部分成员初始化
用不到的成员,可以不进行初始化。
package main
import "fmt"
type Person struct {
id, age int
name, email string
}
func main() {
kite := Person{
id: 1,
name: "kite",
}
fmt.Printf("tom: %v", kite)
}
PS E:\TEXT\test> go run .
tom: {1 0 kite }
PS E:\TEXT\test>