Golang 指向结构体的指针

Golang中的指针是一个变量,用来存储另一个变量的内存地址。Golang中的指针也被称为特殊变量。这些变量被用来在系统中的特定内存地址存储一些数据。

你也可以使用一个指向 结构 的指针。 Golang中的结构是一种用户定义的类型,它允许将不同类型的项目分组/合并为一个单一的类型。为了使用指向结构的指针,你可以使用 **& **操作符,即地址操作符。Golang允许程序员使用指针访问结构的字段,而不需要明确地取消引用。

例1: 在这里,我们要创建一个名为Employee的结构,它有两个变量。在主函数中,创建一个结构的实例,即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}