用法
- &取地址 *解引用
- 值在传递给函数或者方法的时候会被复制
- 通道、函数、方法、映射、切片是引用变量,它们持有的都是引用,也即保存指针的变量。
// 地址引用,直接内存地址交换func swap(x, y *int) {*y, *x = *x, *y// 也可以是 *x, *y = *y, *x}// 值引用,需要把交换好的值返回func swap1(x, y int) (int, int) {x, y = y, xreturn x, y}func main() {x, y := 1, 2// 这种方式直接交换x和y的地址,是引用的地址swap(&x, &y)fmt.Println(x, y) // will print 2,1// Now x is 2, y is 1// 这种方式还得得到swap1()的返回值x, y = swap1(x, y)fmt.Println(x, y) // will print 1,2}
