首页 > 编程笔记 > Go语言笔记

GO语言结构体的定义和使用

结构体使用关键字 type 定义,关键字 type 能将各种基本类型定义为自定义类型,基本类型包括整型、字符串、布尔型等。

结构体是一种复合的基本类型,它里面的成员(也可以称为元素或字段)可以是任意数据类型,所以需要使用 type 定义结构体,其语法格式如下:
type name struct {
    field1 dataType
    field2 dataType
    ...
}
语法说明如下:
根据结构体的定义语法,我们定义结构体 person,分别设置成员 name 和 age,示例如下:
// 定义结构体person
type person struct {
    name string
    age int
}
结构体定义后,下一步是对结构体进行实例化,实例化是对结构体的成员赋予具体真实的数值,使其能客观反映真实事物,实例化过程如下:
package main

import "fmt"

// 定义结构体person
type person struct {
    name string
    age  int
}

func main() {
    // 实例化方法1
    // 实例化结构体person,生成实例化变量p
    p := person{name: "Tom", age: 18}
    // 由实例化变量p访问成员
    fmt.Printf("结构体成员name的值:%v\n", p.name)
    fmt.Printf("结构体成员age的值:%v\n", p.age)

    // 实例化方法2
    // 实例化结构体
    var p1 person
    // 对结构体成员进行赋值操作
    p1.name = "Tim"
    p1.age = 22
    // 由实例化变量p1访问成员
    fmt.Printf("结构体成员name的值:%v\n", p1.name)
    fmt.Printf("结构体成员age的值:%v\n", p1.age)

    // 实例化方法3
    // 使用new()实例化结构体
    p3 := new(person)
    // 对结构体成员进行赋值操作
    p3.name = "LiLy"
    p3.age = 28
    // 由实例化变量p3访问成员
    fmt.Printf("结构体成员name的值:%v\n", p3.name)
    fmt.Printf("结构体成员age的值:%v\n", p3.age)

    // 实例化方法4
    // 取结构体实例化的内存地址
    p4 := &person{}
    // 对结构体成员进行赋值操作
    p4.name = "Mary"
    p4.age = 16
    // 由实例化变量p4访问成员
    fmt.Printf("结构体成员name的值:%v\n", p4.name)
    fmt.Printf("结构体成员age的值:%v\n", p4.age)
}
上述代码列出了结构体的 4 种实例化方法,每一种实例化方法说明如下:
运行上述代码,运行结果为:
结构体成员name的值:Tom
结构体成员age的值:18
结构体成员name的值:Tim
结构体成员age的值:22
结构体成员name的值:LiLy
结构体成员age的值:28
结构体成员name的值:Mary
结构体成员age的值:16
综上所述,结构体使用 type name struct{xxx} 方法定义,在已定义的结构体名字后面加上中括号就能实现结构体实例化,在中括号里面使用键值对形式设置每个成员的初始值,若没有设置初始值,Go 语言为该成员设置相应默认值。

相关文章