代码如下
```
package main
import "fmt"
func swap(a, b *int) (*int, *int) {
fmt.Printf("a2: %v %p\n", *a, a)
a, b = b, a
fmt.Printf("a3: %v %p\n", *a, a)
return a, b
}
func main() {
a := 3
b := 4
fmt.Printf("a1: %v %p\n", a, &a)
c, d := swap(&a, &b)
fmt.Printf("a4: %v %p\n", a, &a)
fmt.Println(*c, *d)
}
```
打印输出:
a1: 3 0xc0000120b8
a2: 3 0xc0000120b8
a3: 4 0xc0000120d0
a4: 3 0xc0000120b8
问题:
1.golang指针类型无法运算,为什么swap函数中 a,b=b,a可以执行?
2.从swap中打印的a2、a3来看,a指向的地址已经发生了变化。操作的是指针类型,跳出swap函数之后a应该还是修改后的值,为什么a4与a3的打印结果不一致?
有疑问加站长微信联系(非本文作者)