go筆記-值傳遞、引用傳遞


eg:

func sliceModify(slice []int) {
    // slice[0] = 88
    slice = append(slice, 6)
}
func main() {
    slice := []int{1, 2, 3, 4, 5}
    sliceModify(slice)
    fmt.Println(slice)
}
out: [1 2 3 4 5]

雖然說數組切片在函數傳遞時是按照引用的語義傳遞的,比如說在 sliceModify 函數里面 slice[0] = 88,在方法調用的上下文中,調用函數對slice引用的改表是看得見的。

但是在對slice進行append操作的時候,返回的是新的引用,並非原始引用。

解決:

傳遞指針的指針

eg:

func sliceModify(slice *[]int) {
    *slice = append(*slice, 6)
}
func main() {
    slice := []int{1, 2, 3, 4, 5}
    sliceModify(&slice)
    fmt.Println(slice)
}

out: [1 2 3 4 5 6]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM