理解Go 函數中的引用和值傳遞
在Go 中,引用和值傳遞的概念一開始可能會令人困惑。為了澄清,值得注意的是 Go 主要支援按值傳遞。但是,當將指標傳遞給物件時,它模仿透過引用傳遞。
要理解這一點,請考慮以下 Java 函數:
在此程式碼中,DatabaseType 實例 db 是按值傳遞給函數。但是,在 Go 中,它可能表示為:
在 Go 範例中,sql.DB 之前的星號 * 表示該函數需要一個指向 sql.DB 實例的指標。這是因為在 Go 中,指標類型的值會保存位址。
根據您提到的備忘單,語法 func PrintPerson(p *Person) 表示該函數僅接受指向 Person 物件的指標位址。這裡使用指標的原因是為了讓函數能夠修改傳入的原始物件。
為了進一步演示,請考慮以下 Go 程式碼:
在此範例中, x 是一個指向整數的指標。透過取消引用它,我們可以直接修改它指向的值。然而,重新分配 x 指向不同的變數對呼叫者沒有影響,因為它們只有指標變數的副本,而不是它最初指向的值。
因此,使用指標提供了一種機制用於在呼叫者和函數之間共享值,允許函數內所做的變更反映回原始物件。
以上是Go 的值傳遞機制如何使用指標模仿參考傳遞?的詳細內容。更多資訊請關注PHP中文網其他相關文章!