1. 程式人生 > 其它 >GO:理解指標的作用

GO:理解指標的作用

技術標籤:gogo指標

概念和意義的解析

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