两个小案例测试指针-Go
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函数则没有。

浙公网安备 33010602011771号