1. 程式人生 > 實用技巧 >兩個小案例測試指標-Go

兩個小案例測試指標-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函式則沒有。