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