Go语言匿名结构体的2种定义方式(附带实例)
和匿名函数类似,匿名结构体就是没有名字的结构体。
Go语言程序中定义匿名结构体时,不需要使用 type 关键字。匿名结构体主要有两种使用方式:
下面分别进行介绍。
代码如下:
Go语言程序中定义匿名结构体时,不需要使用 type 关键字。匿名结构体主要有两种使用方式:
- 使用 var 关键字定义;
- 使用“:=”定义。
下面分别进行介绍。
var关键字定义匿名结构体
使用这种方式定义匿名结构体,需要先声明表示结构体的变量,再通过该变量为结构体中的成员赋值。代码如下:
package main import ( "fmt" ) func main() { //定义匿名结构体 var actor struct { name string work []string achievement string } //为成员赋值 actor.name = "金·凯瑞" actor.work = []string{"变相怪杰", "楚门的世界", "冒牌天神"} actor.achievement = "金球奖最佳男主角" //访问匿名结构体成员 fmt.Printf("中文名:%v\n", actor.name) fmt.Printf("代表作品:%v\n", actor.work) fmt.Printf("主要成就:%v\n", actor.achievement) }运行结果如下:
中文名:金·凯瑞
代表作品:[变相怪杰 楚门的世界 冒牌天神]
主要成就:金球奖最佳男主角
“:=”定义匿名结构体
将匿名结构体赋值给一个变量,同时为结构体中的成员设置初始值。代码如下:package main import ( "fmt" ) func main() { //定义匿名结构体,同时为成员赋值 actor := struct { name string work []string achievement string }{ name: "金·凯瑞", work: []string{"变相怪杰", "楚门的世界", "冒牌天神"}, achievement: "金球奖最佳男主角", } //访问匿名结构体成员 fmt.Printf("中文名:%v\n", actor.name) fmt.Printf("代表作品:%v\n", actor.work) fmt.Printf("主要成就:%v\n", actor.achievement) }运行结果如下:
中文名:金·凯瑞
代表作品:[变相怪杰 楚门的世界 冒牌天神]
主要成就:金球奖最佳男主角