兩個小案例測試指標-Go
阿新 • • 發佈:2020-12-17
go指標一個小案例
package main import "fmt" func swap2(a, b *int) { fmt.Println("swap2 交換前地址", a, b) fmt.Println("swap2 交換前數值", *a, *b) // 取a指標的值,賦給臨時變數t t := *a // 取b指標的值,賦給a指標指向的變數 *a = *b // 將a指標的值賦給b指標指向的變數 *b = t fmt.Println("swap2 交換後地址", a, b) fmt.Println("swap2 交換後數值", *a, *b) } func swap(a, b *int) { fmt.Println("swap 交換前地址", a, b) fmt.Println("swap 交換前數值", *a, *b) a, b = b, a fmt.Println("swap 交換後地址", a, b) fmt.Println("swap 交換後數值", *a, *b) } func main() { x, y := 1, 2 swap2(&x, &y) fmt.Println(x, y) // 2 1 a, b := 3, 4 swap(&a, &b) fmt.Println(&a, &b) fmt.Println(a, b) // 3 4 }
輸出結果:
swap2 交換前地址 0xc000014090 0xc000014098
swap2 交換前數值 1 2
swap2 交換後地址 0xc000014090 0xc000014098
swap2 交換後數值 2 1
2 1
swap 交換前地址 0xc0000140b0 0xc0000140b8
swap 交換前數值 3 4
swap 交換後地址 0xc0000140b8 0xc0000140b0
swap 交換後數值 4 3
0xc0000140b0 0xc0000140b8
3 4
swap2 指標所指向地址的值發生了變化,swap函式則沒有。