demo1.go:
```
func swap01(x, y *int) {
fmt.Printf("swap value a,b -- %p,%p -- %d,%d\n",x,y,*x,*y)
*x, *y = *y, *x
fmt.Printf("swap value a,b -- %p,%p -- %d,%d\n",x,y,*x,*y)
}
func main() {
a:=10
b:=20
fmt.Printf("mian a,b -- %p,%p,%d -- %d\n",&a,&b,a,b)
swap01(&a,&b)
fmt.Printf("mian a,b -- %p,%p,%d -- %d\n",&a,&b,a,b)
}
swap01(&a,&b)输出:
mian a,b -- 0xc000064080,0xc000064088,10 -- 20
swap value a,b -- 0xc000064080,0xc000064088 -- 10,20
swap value a,b -- 0xc000064080,0xc000064088 -- 20,10
mian a,b -- 0xc000064080,0xc000064088,20 -- 10
```
demo2.go:
```
func swap02(x, y *int) {
fmt.Printf("swap address a,b -- %p,%p -- %d,%d\n",x,y,*x,*y)
x, y = y, x
fmt.Printf("swap address a,b -- %p,%p -- %d,%d\n",x,y,*x,*y)
}
func main() {
a:=10
b:=20
fmt.Printf("mian a,b -- %p,%p,%d -- %d\n",&a,&b,a,b)
swap02(&a,&b)
fmt.Printf("mian a,b -- %p,%p,%d -- %d\n",&a,&b,a,b)
}
swap02(&a,&b)输出:
mian a,b -- 0xc000064080,0xc000064088,10 -- 20
swap address a,b -- 0xc000064080,0xc000064088 -- 10,20
swap address a,b -- 0xc000064088,0xc000064080 -- 20,10
mian a,b -- 0xc000064080,0xc000064088,10 -- 20
```
疑惑:
swap01交换值,swap02交换了地址,为什么swap02的a,b值没有变?
有疑问加站长微信联系(非本文作者)