Bilakah Go Pointers Dereference Diri Sendiri?
Dalam Go, penunjuk menyediakan mekanisme untuk mengakses nilai secara tidak langsung, dan tingkah laku mereka mengenai penyahrujukan boleh mengelirukan.
Senario utama di mana penunjuk Go secara automatik nyahrujuk adalah melalui ungkapan pemilih. Apabila mengakses medan struct menggunakan operator titik (cth., x.f), pengkompil secara tersirat menyahrujuk penuding jika x ialah penuding kepada struct. Borang ini ialah singkatan untuk (x).f, dengan () menunjukkan penyahrujukan.
Contoh lain ialah pengindeksan. Tatasusunan adalah penunjuk secara berkesan kepada elemen pertama mereka. Apabila mengindeks tatasusunan, adalah mungkin untuk menggunakan sintaks penunjuk tanpa penyahrujukan yang jelas. Ungkapan indeks a[x], dengan a ialah penunjuk kepada tatasusunan, bersamaan dengan (*a)[x]. Penyahrujukan automatik ini membolehkan untuk mengakses elemen dalam tatasusunan berbilang dimensi dengan mudah.
Pertimbangkan kod berikut:
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]) }
Dalam contoh ini, kedua-dua ungkapan pemilih ptr.Field dan ungkapan pengindeksan ptr20 nyahrujuk secara automatik petunjuk, memudahkan kod dan meningkatkan kebolehbacaan.
Atas ialah kandungan terperinci Bilakah Penunjuk Pergi Secara Automatik Nyahrujuk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!