- 相關知識點
a. 函數實參到形參的傳遞永遠是值拷貝
b. 函數參數 支持不定長參數,不定參數名在函數體 內相當于切片,對切片的操作同樣適合對不定參數的操作
c. 切片是引用類型,值包含指向數組的指針
func test1(s ...int) { // s為不定長參數s[0] = 888
}
func test2(s2 []int) {s2[0] = 9999
}
func main() {var a = [...]int{0, 1, 2, 3, 4, 5} // a是一個數組var b = a[2:] // b是基于a的切片b[0] = 1000 // 實際上修改的是底層數組test1(b...) // 雖然是值拷貝,但是 切片是引用類型, 就算是值拷貝,傳遞過去的也包含 指向底層數組的指針fmt.Println(b) // [888 3 4 5]fmt.Println(a) // [0 1 888 3 4 5]test2(b)fmt.Println(b) //[9999 3 4 5]fmt.Println(a) //[0 1 9999 3 4 5]
}