Rumah > pembangunan bahagian belakang > Golang > go语言如何初始化结构体的成员变量

go语言如何初始化结构体的成员变量

青灯夜游
Lepaskan: 2021-06-07 15:31:21
asal
3485 orang telah melayarinya

初始化方法:1、使用“ins := 结构体类型名{字段1:值,字段2:值,…}”语句初始化,适合选择性填充字段较多的结构体;2、使用“ins := 结构体类型名{字段1的值,字段2的值,…}”语句初始化,适合填充字段较少的结构体。

go语言如何初始化结构体的成员变量

本教程操作环境:windows10系统、GO 1.11.2、Dell G3电脑。

结构体在实例化时可以直接对成员变量进行初始化,初始化有两种形式分别是以字段“键值对”形式和多个值的列表形式,键值对形式的初始化适合选择性填充字段较多的结构体,多个值的列表形式适合填充字段较少的结构体。

使用“键值对”初始化结构体

结构体可以使用“键值对”(Key value pair)初始化字段,每个“键”(Key)对应结构体中的一个字段,键的“值”(Value)对应字段需要初始化的值。

键值对的填充是可选的,不需要初始化的字段可以不填入初始化列表中。

结构体实例化后字段的默认值是字段类型的默认值,例如 ,数值为 0、字符串为 ""(空字符串)、布尔为 false、指针为 nil 等。

1) 键值对初始化结构体的书写格式

键值对初始化的格式如下:

ins := 结构体类型名{
    字段1: 字段1的值,
    字段2: 字段2的值,
    …
}
Salin selepas log masuk

下面是对各个部分的说明:

  • 结构体类型:定义结构体时的类型名称。

  • 字段1、字段2:结构体成员的字段名,结构体类型名的字段初始化列表中,字段名只能出现一次。

  • 字段1的值、字段2的值:结构体成员字段的初始值。

键值之间以:分隔,键值对之间以,分隔。

2) 使用键值对填充结构体的例子

下面示例中描述了家里的人物关联,正如儿歌里唱的:“爸爸的爸爸是爷爷”,人物之间可以使用多级的 child 来描述和建立关联,使用键值对形式填充结构体的代码如下:

type People struct {
    name  string
    child *People
}
relation := &People{
    name: "爷爷",
    child: &People{
        name: "爸爸",
        child: &People{
                name: "我",
        },
    },
}
Salin selepas log masuk

代码说明如下:

  • 第 1 行,定义 People 结构体。

  • 第 2 行,结构体的字符串字段。

  • 第 3 行,结构体的结构体指针字段,类型是 *People。

  • 第 6 行,relation 由 People 类型取地址后,形成类型为 *People 的实例。

  • 第 8 行,child 在初始化时,需要 *People 类型的值,使用取地址初始化一个 People。

提示:结构体成员中只能包含结构体的指针类型,包含非指针类型会引起编译错误。

使用多个值的列表初始化结构体

Go语言可以在“键值对”初始化的基础上忽略“键”,也就是说,可以使用多个值的列表初始化结构体的字段。

1) 多个值列表初始化结构体的书写格式

多个值使用逗号分隔初始化结构体,例如:

ins := 结构体类型名{
    字段1的值,
    字段2的值,
    …
}
Salin selepas log masuk

使用这种格式初始化时,需要注意:

  • 必须初始化结构体的所有字段。

  • 每一个初始值的填充顺序必须与字段在结构体中的声明顺序一致。

  • 键值对与值列表的初始化形式不能混用。

2) 多个值列表初始化结构体的例子

下面的例子描述了一段地址结构,地址要求具有一定的顺序,例如:

type Address struct {
    Province    string
    City        string
    ZipCode     int
    PhoneNumber string
}
addr := Address{
    "四川",
    "成都",
    610000,
    "0",
}
fmt.Println(addr)
Salin selepas log masuk

运行代码,输出如下:

{四川 成都 610000 0}
Salin selepas log masuk

推荐学习:Golang教程

Atas ialah kandungan terperinci go语言如何初始化结构体的成员变量. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan