// Go支持指针,允许传递对程序中的值和记录的引用
package main
import "fmt"
func zeroval(ival int) { // zeroval函数的参数是int,所以参数将按值传递
ival = 0 // zeroval将会获得ival值的拷贝,而不是调用函数时传入的ival
}
func zeroptr(iptr *int) { // zeroptr函数的参数是*int ,这表示它需要一个int指针
*iptr = 0 // 函数体中的*iptr解除在那个地址上的从内存地址到当前值的引用,为解除引用的指针赋值会改变引用地址的值
}
func main() {
i := 1
fmt.Println("initial:", i)
zeroval(i)
fmt.Println("zeroval:", i)
zeroptr(&i) // &i语法给出i的内存地址,即指向i的指针
fmt.Println("zeroptr:", i)
fmt.Println("pointer:", &i) // 指针也可以被打印
}
// zeroval不会更改main()中的i,但是zeroptr会更改,因为它具有对该变量的内存地址的引用。