Go 中的引用和值傳遞:理解「*」修飾符
在函數之間傳遞資料是程式設計的一個基本面。在 Go 中,有兩種主要方法可以做到這一點:按值傳遞或按引用傳遞。後者涉及使用“*”修飾符,這可能會讓初學者感到困惑。
在 Java 中,透過引用傳遞物件非常簡單,因為物件本質上是作為引用傳遞的。然而,在Go中,它允許按值傳遞和按引用傳遞,使用指標可以更有效。
「」表示指向類型的指標。例如, func PutTasks(db sql.DB) 表示 db 參數是指向 sql.DB 物件的指標。原因是 Go 技術上只支援值傳遞,而傳遞指標是模擬傳遞參考的一種方式。
當你傳遞指標時,你傳遞的是一個值(指標本身)指向記憶體中的實際物件。這意味著透過指針對物件所做的更改將反映在傳遞給函數的原始變數中。另一方面,直接傳遞值(不含“*”)會複製原始值,因此函數中所做的變更不會影響原始變數。
提供的範例 func PrintPerson( p *Person) 需要一個指針,因為它需要修改 Person 物件以列印其詳細資訊。如果它收到一個值,則任何變更只會影響函數內儲存的副本。
理解按引用傳遞和按值傳遞對於在 Go 中有效編寫程式碼至關重要。在適當的時候使用指標可以提高效能並保持函數和呼叫者程式碼之間的一致性。
以上是Go 的「*」修飾符:按值傳遞還是按引用傳遞?的詳細內容。更多資訊請關注PHP中文網其他相關文章!