揭開Go 函數中引用和值傳遞的神秘面紗
在Go 中,引用和值傳遞的概念可能看起來令人困惑最初。澄清一下,Go 充分利用了值傳遞,即使在處理指標時也是如此。當您將指標傳遞給函數時,您實際上傳遞的是它的值,而不是引用的物件。
函數參數中星號(*) 的用途
何時您會在函數參數(如func PutTasks(db *sql.DB))中的類型之前看到一個星號(*),它表示該參數的類型為“指向sql.DB”,與類型“sql.DB”形成對比。這種區別至關重要,因為函數將透過此指針對引用的物件進行操作。
傳遞指標的好處
傳遞指標提供了一種在物件之間共享值的機制呼叫函數和被呼叫函數。呼叫者可以看到對被呼叫函數內引用物件的任何修改。這本質上是 Java 的物件傳遞預設實現的功能,而 Go 需要明確使用指標來進行此類共用。
例如,假設您有一個 Setter 函數需要修改物件的屬性。在 Java 中,這很簡單,但在 Go 中,如果沒有指針,函數只會接收物件的副本,所做的任何更改都不會反映在原始物件中。透過將指標傳遞給 Setter 函數,您可以有效地允許該函數對原始物件進行操作,從而實現在函數呼叫之外持續存在的變更。
其他資源
要深入研究這個主題,請參考以下資源:
以上是Go 的值傳遞機制如何與指標一起運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!