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)
}
运行结果如下:
	中文名:金·凯瑞
	代表作品:[变相怪杰 楚门的世界 冒牌天神]
	主要成就:金球奖最佳男主角
 ICP备案:
 公安联网备案: