Go语言结构体匿名字段赋值

Go语言结构体匿名字段赋值教程

Go 语言结构体匿名字段 的赋值可以使用 “.” 访问整个匿名字段,并对其赋值的方式,也可以使用 “.” 的方式分别访问匿名字段中的每一个子字段直接赋值。

结构体匿名字段整体键值赋值

语法

var structVar StructType structVar.Field1 = StructType1{ Value1, Value2, ... } structVar.Field2 = value1 ...

说明

首先,我们定义一个结构体 StructType 类型变量 structVar,接着我们对该结构体变量 structVar 的字段 Field1 进行整体的结构体赋值。

同时,对结构体变量里面的非结构体成员也采用单独赋值的方式进行赋值。

结构体匿名字段整体列表赋值

语法

var structVar StructType structVar = StructType{ StructType1{ Value1, Value2, ... } value1 ... }

说明

首先,我们定义一个结构体 StructType 类型的变量 structVar,接着我们对该结构体变量 structVar 使用字段列表的形式进行赋值。

结构体匿名字段单独键值赋值

语法

var structVar StructType structVar.StructField1 = value1 structVar.StructField2 = value2 structVar.Field3 = value3 ...

说明

首先,我们定义一个结构体 StructType 类型的变量 structVar,接着我们对该结构体变量 structVar 的字段匿名字段类型里面的 StructField1 字段和 StructField2 字段进行赋值。

案例

结构体匿名字段整体键值赋值

定义一个结构体,并使用结构体匿名字段整体键值赋值给结构体匿名字段赋值

package main import ( "fmt" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") type Person struct { Name string Age int } type Student struct { Person Score float64 } //结构体匿名字段整体键值赋值 var stu Student stu.Person = Person{ "HaiCoder", 10, } stu.Score = 100 fmt.Println("Student =", stu) }

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

21_golang结构体匿名字段赋值.png

首先,我们定义了一个结构体 Person,该结构体有两个字段,接着再次定义了一个结构体 Student,该结构体有两个字段。

Student 结构体第一个字段类型为 Person,也是一个结构体类型,同时,是一个匿名字段,Student 结构体的第二个字段是一个 float64 类型的字段。

接着,我们定义了一个 Student 类型的结构体变量 stu,并且对其匿名字段 Person 进行赋值和对其具名字段 Score 进行赋值,最后使用 print 打印赋值完的结构。

结构体匿名字段整体列表赋值

定义一个结构体,并使用结构体匿名字段整体列表赋值给结构体匿名字段赋值

package main import ( "fmt" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") type Person struct { Name string Age int } type Student struct { Person Score float64 } //定义一个结构体,并使用结构体匿名字段整体列表赋值给结构体匿名字段赋值 var stu Student stu = Student{ Person{ "HaiCoder", 10, }, 100.0, } fmt.Println("Student =", stu) }

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

22_golang结构体匿名字段赋值.png

首先,我们定义了一个结构体 Person,该结构体有两个字段,接着再次定义了一个结构体 Student,该结构体有两个字段。

接着,我们使用结构体匿名字段整体列表赋值给结构体匿名字段赋值,同时给结构体的具名字段赋值。

结构体匿名字段单独键值赋值

定义一个结构体,并直接访问匿名字段里面的成员,直接赋值

package main import ( "fmt" ) func main() { fmt.Println("嗨客网(www.haicoder.net)") type Person struct { Name string Age int } type Student struct { Person Score float64 } //定义一个结构体,并直接访问匿名字段里面的成员,直接赋值 var stu Student stu.Name = "HaiCoder" stu.Age = 18 stu.Score = 99 fmt.Println("Student =", stu) }

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

23_golang结构体匿名字段赋值.png

首先,我们定义了一个结构体 Person,该结构体有两个字段,接着再次定义了一个结构体 Student,该结构体有两个字段。

接着,我们可以直接访问结构体匿名字段中的字段,并给其赋值。

Go语言结构体匿名字段赋值总结

Go 语言中结构体的匿名字段的赋值可以使用 “.” 访问整个匿名字段,并对其赋值的方式,也可以使用 “.” 的方式分别访问匿名字段中的每一个子字段直接赋值。