您也可以使用指向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}