iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 14
1
自我挑戰組

Go從新學系列 第 14

[DAY 14]GO 的指標(Pointer)

  • 分享至 

  • xImage
  •  

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


上一篇
[DAY 13]GO 的 結構(struct)
下一篇
[DAY 15]GO 的 函式(一)
系列文
Go從新學26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言