new()
就會於堆積內分配一個記憶體空間並賦予零值
Go 語言中的函數調用是按值傳遞的,也就是在函式內是複製一份,而不是使用原本的變數
pakage main
import (
"fmt"
)
func modifyValue(x int) {
x = x + 1
}
func main() {
original := 1
modifyValue(original)
fmt.Println(original) // 輸出 1,value 的值沒有改變
}
簡單的原理就是,他會在stack堆疊內複製一份,並使用那一份進行運算
與按值傳遞不同,按引用傳遞不會複製傳遞的值。然而,這代表你必須更小心處理可能的副作用,因為函數內部的更改可能會影響呼叫函數的其他部分
package main
import "fmt"
func modifyValue(ptr *int) {
*ptr = 10
}
func main() {
value := 5
fmt.Println("Before:", value) // 輸出 "Before: 5"
modifyValue(&value)
fmt.Println("After:", value) // 輸出 "After: 10"
}
列幾個因素歸納整理,可以依據下面因素去決定自己該用哪一個