注意:go只有值傳遞!go只有值傳遞!go只有值傳遞!
你可會問,對於slice, map, channel,應該是引用。但其實不是,當將這三種數據結構作爲參數傳過去時, 你函數接收到的只是實參的地址的拷貝!注意,是拷貝。也就是說,當你在函數內部將形參新賦值給一個新的內存地址時,實參並不會改變。看代碼
import "fmt" func test(s []int) { s = []int{2, 3} } func main() { s := []int{1, 2, 3} fmt.Println(s) }
輸出結果: