Golang 结构体的初始化
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>