Go 語言中,函數的參數傳遞--值傳遞

在 Go 語言中,函數的參數傳遞是值傳遞的方式。當函數被調用時,函數參數的值會被拷貝到函數的參數變量中。

對於指針類型的參數,指針本身也是以值的方式進行傳遞。這意味着函數內部的指針參數將獲得原始指針的拷貝,但這個拷貝仍然指向相同的內存地址。

當在函數內部修改通過指針傳遞的變量時,由於指針本身是值傳遞的,原始指針的拷貝在函數內部會指向同一塊內存地址,因此對指針所指的變量的修改將反映在函數外部。

下面是一個示例代碼,演示了指針參數的值傳遞:

go
func modifyPointer(ptr *int) {
    *ptr = 42
}

func main() {
    var value int = 10
    fmt.Println("Before:", value) // 輸出: Before: 10

    modifyPointer(&value)
    fmt.Println("After:", value) // 輸出: After: 42
}

在上述示例中,modifyPointer 函數接受一個指向整型的指針作爲參數,並將指針所指的變量修改爲 42。在 main 函數中,我們聲明瞭一個整型變量 value,然後通過 &value 將其地址傳遞給 modifyPointer函數。當函數執行完畢後,value 的值已經被修改爲 42

總結起來,雖然指針本身是通過值傳遞的方式進行傳遞,但是通過指針可以修改函數外部的變量,因爲指針拷貝後仍然指向相同的內存地址。這使得我們可以在函數內部修改通過指針傳遞的變量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章