Go 指標何時解引用自己?
在 Go 中,指標提供了一種間接存取值的機制,它們關於解引用的行為可以是令人困惑。
Go 指標自動取消引用的主要場景是透過選擇器表達式。當使用點運算子(例如 x.f)存取結構體的欄位時,如果 x 是指向結構體的指針,則編譯器會隱式取消引用該指標。此形式是 (x).f 的簡寫形式,其中 () 表示取消引用。
另一個範例是索引。數組實際上是指向其第一個元素的指標。對陣列進行索引時,可以使用指標語法而無需明確取消引用。索引表達式 a[x](其中 a 是指向數組的指標)等價於 (*a)[x]。這種自動解引用允許方便地存取多維數組中的元素。
考慮以下程式碼:
package main import "fmt" func main() { type SomeStruct struct { Field string } // Create a pointer to a struct ptr := new(SomeStruct) ptr.Field = "foo" // Automatically dereferenced by the selector expression // Create a pointer to a 5x5 array ptr2 := new([5][5]int) ptr2[0][0] = 1 // Automatically dereferenced by the indexing expression fmt.Println(ptr.Field, ptr2[0][0]) }
在此範例中,選擇器表達式 ptr.Field 和索引表達式 ptr20 都會自動解引用指針,簡化程式碼並提高可讀性。
以上是Go指標什麼時候會自動解引用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!