Go 语言 中 结构体 变量的初始化的方式有两种,分别为:使用 列表对字段挨个赋值 和使用键值对赋值的方式。
如果使用键值对赋值的方式初始化结构体,没有被赋值的字段将使用该字段 类型 的默认值,如果使用键值对赋值的方式初始化结构体,那么我们可以有选择的指定赋值的字段。
varName := StructName{ Field1:Field1Value, Field2:Field2Value, ... }
使用键值对的形式给结构体初始化时,我们只需要指定需要设置值的字段名,然后使用冒号的形式给字段名设置值,不需要设置值的字段名可以忽略。
使用键值对的形式初始化结构体变量
package main
import (
"fmt"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
//使用键值对的形式初始化结构体变量
type Student struct {
Name string
Age int
Score float64
}
var stu = Student{
Name:"kongzi",
Age:1998,
Score:100.0,
}
fmt.Println("Student =", stu)
}
程序运行后,控制台输出如下:
我们定义了一个结构体 Student,该结构体初始化有三个字段,一个是 Name,一个是 Age,还有一个 Score,接着,我们显式使用字段名的方式给结构体的每个字段赋值,并打印结果。
使用键值对的形式初始化结构体变量,键值对顺序可以任意
package main
import (
"fmt"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
//使用键值对的形式初始化结构体变量,键值对顺序可以任意
type Student struct {
Name string
Age int
Score float64
}
var stu = Student{
Age:1998,
Name:"kongzi",
Score:100.0,
}
fmt.Println("Student =", stu)
}
程序运行后,控制台输出如下:
我们使用键值对的形式初始化结构体时,结构体里面的键值对的顺序不需要跟结构体里面的顺序一致。我们定义结构体的顺序为 Name、Age 和 Score,但我们赋值的顺序为 Age,Name 和 Score。
使用键值对的形式初始化结构体变量,可以省略不必要的值的赋值
package main
import (
"fmt"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
//使用键值对的形式初始化结构体变量,可以省略不必要的值的赋值
type Student struct {
Name string
Age int
Score float64
}
var stu = Student{
Name:"kongzi",
}
fmt.Println("Student =", stu)
}
程序运行后,控制台输出如下:
我们定义了一个结构体 Student,该结构体初始化有三个字段,一个是 Name,一个是 Age,还有一个 Score,接着,我们显式使用字段名的方式给结构体的字段赋值,但我们只给字段 Name 赋值。
这时,程序没有报错,没有被赋值的字段名使用该字段名变量类型的默认值进行初始化。
如果使用键值对赋值的方式初始化结构体,没有被赋值的字段将使用该字段 类型 的默认值,如果使用键值对赋值的方式初始化结构体,那么我们可以有选择的指定赋值的字段。键值对初始化结构体语法:
varName := StructName{ Field1:Field1Value, Field2:Field2Value, ... }