GO:理解指標的作用
阿新 • • 發佈:2021-02-08
概念和意義的解析
GO菜鳥教程對指標的解釋:
一個指標變數指向了一個值的記憶體地址。
查閱資料對指標加深理解
1)指標型別用於傳遞地址, 而不是傳遞值, 因為 golang 的函式, 所有的引數都是傳遞一個複製的值. 如果值的體積過大, 那麼就會嚴重降低效率, 而傳遞一個地址, 就會大大提高效率. 另外傳遞指標也能讓 go 函式實現對變數值的修改.
2)如果一個複雜型別的值被傳遞了若干次後, 和自己比較, 雖然用於儲存的容器和名稱變了, 但用於儲存值的地址不變, 這個時候, 只要使用指標進行對比, 就知道還是原來的東西.
舉例
理解1:指標指向變數的地址
var a int = 100
fmt.Println(&a)
//輸入&a = 0xc000014080就是變數a的記憶體地址
理解2:指標變數的建立和傳遞
var b string = "我是柯柯"
var ip *string
ip = &b
fmt.Println(ip)
fmt.Println(*ip)
//輸入ip = 0xc000010200就是變數b的記憶體地址
//輸出*ip代表地址所值得值
理解3:大量資料傳遞時,可以傳遞指標地址
//定義一個函式返回指標型別
func getzz() *int {
var c *int
var cnumber int = 12
c = &cnumber
fmt.Println(*c)
return c
}
func main() {
fmt.Println(getzz())
fmt.Println(*getzz())
}
//fmt.Println(getzz()) = 0xc000014088
//fmt.Println(*getzz()) = 12