Go 是支援指標 (pointer) 的程式語言
對指標我還有很多東西要學
不過聽說 GO 裡面指標已經做了簡化
不僅沒有指標運算,也不需要手動控制記憶體釋放
package main
import "fmt"
func zero(x int) {
x = 0
}
func main() {
x := 5
zero(x)
fmt.Println(x)
}
執行結果:
0
我們可以看到 我們雖然執行了 zero 方法
但是 X 的值還是不會變
這時候我們會需要用的pointer的技巧
package main
import "fmt"
func zero (a *int){
*a = 6
}
func main() {
x := 5
zero(&x)
fmt.Println(x)
}
執行結果:
6
之前學的struct也可以運用這個技巧
有效的進行動態記憶體分配
package main
import "fmt"
type address struct {
x float64
y float64
z float64
}
func main() {
p := new(address)
p.x = 3.0
p.y = 4.0
p.z = 5.0
fmt.Println("[" , p.x , "," , p.y , "," , p.z , "]" )
}
對結構動態分配記憶體相當有用,Go 物件導向程式大量使用這種語法。
參照:
https://michaelchen.tech/golang-programming/pointer/
http://golang-zhtw.netdpi.net/08_pointers