go參數傳遞

package main

import (
	"fmt"
)

type A int

func main() {
	var a A = 12
	fmt.Printf("%p", &a) //0xc0000120b8
	fun1(&a)             // 9
	fmt.Printf("%d", a) //0xc0000120b8
	fun2(a)              // 9
	fmt.Printf("%d", a) //0xc0000120b8
}

func fun1(a *A) {
	fmt.Println(a) //0xc0000120b8
	*a = 9
}

func fun2(a A) {
	fmt.Println(&a) // 0xc0000120f0
	a = 10
}

總結

go中默認按值傳遞傳遞參數,在fun2函數中修改變量a不會影響原來的變量a,而通過指針傳遞可以修改原來的變量。fun2的a拷貝了main中a變量,值相同地址不同,所以在這裏的a和main方法裏面的a內存地址不一樣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章