Golang 菜鸟教程

Golang 控制语句

Golang 函数 & 方法

Golang 结构体

Golang 切片 & 数组

Golang 字符串(String)

Golang 指针

Golang 接口

Golang 并发

Golang 异常(Error)

Golang 其他杂项

Go 语言结构体和指针

您也可以使用指向struct的指针。Golang中的struct(结构体)是用户定义的类型,它允许将可能不同类型的项目分组/组合为单个类型。要使用指向结构的指针,可以使用运算符,即地址运算符。Golang允许程序员使用指针访问结构的字段,而无需显式地解引用。

示例1:在这里,我们创建了一个名为Employee的结构,它有两个变量。在main函数中,创建结构体的实例,即emp,然后,你可以将结构体的地址传递给表示结构体概念的指针。没有必要显式地使用解引用,因为它会给出与下面程序相同的结果(两次ABC)。

package main

import "fmt"

//定义结构体
type Employee struct {

    //设置字段
    name  string
    empid int
}

func main() {

    //创建的实例
    //员工结构体类型
    emp := Employee{"ABC", 19078}

    //在这里,它是指向结构体的指针
    pts := &emp

    fmt.Println(pts)

    //访问结构字段(员工的姓名)
    //使用指针,但是这里我们没有使用显式解引用
    fmt.Println(pts.name)

    //通过显式使用解引用
    //表示结果与上面相同
    fmt.Println((*pts).name)

}

输出:

&{ABC 19078}
ABC
ABC

示例2:您还可以使用指针,如下所示修改结构成员或结构字面量的值:

package main

import "fmt"

//定义结构体
type Employee struct {
    name  string
    empid int
}

func main() {

    //创建的实例
    //员工结构类型
    emp := Employee{"ABC", 19078}

    //在这里,它是指向结构体的指针
    pts := &emp

    //显示值
    fmt.Println(pts)

    //更新name的值
    pts.name = "XYZ"

    fmt.Println(pts)

}

输出:

&{ABC 19078}
&{XYZ 19078}