Go支持指针,使您可以将引用传递给程序中的值和记录。
package main import "fmt" // 我们将展示指针与值相反的工作方式 //2个功能:“ zeroval”和“ zeroptr”。`zeroval`具有一个 // `int`参数,因此参数将被传递给它 //值。`zeroval`将获得`ival`的副本 // 从调用函数中的一个。 func zeroval(ival int) { ival = 0 } // 相反,“ zeroptr”具有一个“ * int”参数,这意味着 //它需要一个`int`指针。的* iptr代码 // 然后,函数主体从其函数_dereferences_ // 内存地址到该地址的当前值。 // 为取消引用的指针分配值会更改 // 引用地址的值。 func zeroptr(iptr *int) { *iptr = 0 }
定义这些功能后,您可以执行以下操作:
func main() { i := 1 fmt.Println("initial:", i) // 首字母:1 zeroval(i) fmt.Println("zeroval:", i) // 零值:1 // 我i仍然等于1,因为编辑了Zeroval // a "copy" of `i`, not the original. // The `&i` syntax gives the memory address of `i`, //即指向“ i”的指针。当调用`zeroptr`时, // it will edit the "original" `i`. zeroptr(&i) fmt.Println("zeroptr:", i) // zeroptr:0 // 指针也可以打印。 fmt.Println("pointer:", &i) // 指针:0x10434114 }
试试这个代码