Go语言键值对初始化结构体

Go语言键值对初始化结构体教程

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) }

程序运行后,控制台输出如下:

09_golang结构体struct初始化.png

我们定义了一个结构体 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) }

程序运行后,控制台输出如下:

10_golang结构体struct初始化.png

我们使用键值对的形式初始化结构体时,结构体里面的键值对的顺序不需要跟结构体里面的顺序一致。我们定义结构体的顺序为 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) }

程序运行后,控制台输出如下:

11_golang结构体struct初始化.png

我们定义了一个结构体 Student,该结构体初始化有三个字段,一个是 Name,一个是 Age,还有一个 Score,接着,我们显式使用字段名的方式给结构体的字段赋值,但我们只给字段 Name 赋值。

这时,程序没有报错,没有被赋值的字段名使用该字段名变量类型的默认值进行初始化。

Go语言键值对初始化结构体总结

如果使用键值对赋值的方式初始化结构体,没有被赋值的字段将使用该字段 类型 的默认值,如果使用键值对赋值的方式初始化结构体,那么我们可以有选择的指定赋值的字段。键值对初始化结构体语法:

varName := StructName{ Field1:Field1Value, Field2:Field2Value, ... }