Golang 中的指针是一个变量,用于存储另一个变量的内存地址。 Golang 中的指针也称为特殊变量。这些变量用于在系统中的特定内存地址存储一些数据。
您还可以使用指向struct的指针。 Golang 中的 struct 是用户定义的类型,它允许将可能不同类型的项目分组/组合成单个类型。要使用指向结构的指针,您可以使用&运算符,即地址运算符。 Golang 允许程序员使用指针访问结构的字段,而无需显式取消引用。
示例 1:在这里,我们创建了一个名为 Employee 的结构,它有两个变量。在 main函数,创建结构体的实例,即emp 。之后,您可以将结构的地址传递给表示指向结构概念的指针的指针。无需显式使用取消引用,因为它会给出与您在以下程序中看到的相同的结果(两次 ABC)。
// Golang program to illustrate the
// concept of the Pointer to struct
package main
import "fmt"
// taking a structure
type Employee struct {
// taking variables
name string
empid int
}
// Main Function
func main() {
// creating the instance of the
// Employee struct type
emp := Employee{"ABC", 19078}
// Here, it is the pointer to the struct
pts := &emp
fmt.Println(pts)
// accessing the struct fields(liem employee's name)
// using a pointer but here we are not using
// dereferencing explicitly
fmt.Println(pts.name)
// same as above by explicitly using
// dereferencing concept
// means the result will be the same
fmt.Println((*pts).name)
}
输出:
&{ABC 19078}
ABC
ABC
示例 2:您还可以使用如下所示的指针修改结构成员或结构字面量的值:
// Golang program to illustrate the
// concept of the Pointer to struct
package main
import "fmt"
// taking a structure
type Employee struct {
// taking variables
name string
empid int
}
// Main Function
func main() {
// creating the instance of the
// Employee struct type
emp := Employee{"ABC", 19078}
// Here, it is the pointer to the struct
pts := &emp
// displaying the values
fmt.Println(pts)
// updating the value of name
pts.name = "XYZ"
fmt.Println(pts)
}
输出:
&{ABC 19078}
&{XYZ 19078}