首页 > 编程笔记 > Go语言笔记 阅读:7

Go语言匿名结构体的2种定义方式(附带实例)

和匿名函数类似,匿名结构体就是没有名字的结构体。

Go语言程序中定义匿名结构体时,不需要使用 type 关键字。匿名结构体主要有两种使用方式:
下面分别进行介绍。

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)
}
运行结果如下:

中文名:金·凯瑞
代表作品:[变相怪杰 楚门的世界 冒牌天神]
主要成就:金球奖最佳男主角

在上述代码中,先声明结构体类型的变量 actor,再通过该变量为结构体中的成员赋值。

“:=”定义匿名结构体

将匿名结构体赋值给一个变量,同时为结构体中的成员设置初始值。代码如下:
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)
}
运行结果如下:

中文名:金·凯瑞
代表作品:[变相怪杰 楚门的世界 冒牌天神]
主要成就:金球奖最佳男主角

在上述代码中,在定义匿名结构体的同时为结构体成员设置初始值,每个成员的值以“键值对”的格式表示,每个“键值对”的末尾必须使用逗号作为分隔符。

相关文章