iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0

Golang
指標
研究到一半突然發現了一個很久很久沒看到的詞,「指標」!

我印象中 印象中 印象中,指標大概有減少一直複製而導致花費記憶體的優點,之所以打三次是因為真的是”印象中”,在某些case下指標真的會比較省效能,至於是不是通例,可能要請教常使用的人才知道了。

有C 語言的就會知道「指標」這的東西,那直接上個範例來看看情況是如何吧!

package main
 
import (
    "fmt"
)
 
func main() {
    n := 2
 
    // Reference the adress from the variable.
    nPtr := &n

    // Print out the address.
    fmt.Println(nPtr)
    fmt.Println(*nPtr)
     
    *nPtr = 4
    fmt.Println(nPtr)
    fmt.Println(*nPtr)

    n= 8
    fmt.Println(nPtr)
    fmt.Println(*nPtr)
}

*表示這個變數是個指標
*變數 = 宣告一個指標變數
&代表「把這個變數的地址取出來」

所以我們可以看出 nPtr跟*nPtr是不同的東西!

也可以動態記憶體配置

package main
 
import (
    "fmt"

)
 
func main() {
    nPtr := new(int)
 
    // Assign the value indirectly.
    *nPtr = 2

    // Print out the address.
    fmt.Println(nPtr)
    fmt.Println(*nPtr)
     
    *nPtr = 4
    fmt.Println(nPtr)
    fmt.Println(*nPtr)

}

本篇原本還想繼續加上說明指標的好處,但後來想想還是有興趣的朋友自行去google好了,深怕解釋的不夠好

參考資料
https://zh.wikipedia.org/wiki/%E6%8C%87%E6%A8%99_(%E9%9B%BB%E8%85%A6%E7%A7%91%E5%AD%B8)

https://programming.im.ncnu.edu.tw/Chapter9.htm


上一篇
switch-case 與select
下一篇
錯誤處理
系列文
go go let's go - golang 從0開始30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言