08-指標‎ > ‎

08.02-new

使用內建的 new 函式也會取得一個指標:

func one(xPtr *int) {
    *xPtr = 1
}
func main() {
    xPtr := new(int)
    one(xPtr)
    fmt.Println(*xPtr) // x is 1
}

new 函式的參數是一個型別,會配置符合該型別數量的記憶體空間,並傳回這塊記憶體的起始位址。

在一些程式設計語言中,使用 new 與 & 時會有些差異,在使用完 new 所建立的記憶體時,需要記得刪除這塊記憶體。然而,Go 語言不用,因為它是具備垃圾收集的(garbage collected)程式設計語言,這表示配置的記憶體會在沒有任何人參照到它時自動收回。

在 Go 語言,很少使用內建的型別來配置記憶體,不過我們在下一章會看到,指標搭配 struct 使用時是很有幫助的。

Comments