Mengubah suai secara langsung Medan dalam Peta Struktur dalam Go
Dalam Go, peta int to struct membolehkan anda mengakses nilai struct dengan menggunakan kunci. Walau bagaimanapun, mengubah suai secara langsung medan dalam nilai struct boleh mengakibatkan tingkah laku yang tidak dijangka.
Sebab untuk Arah
Apabila anda mengakses nilai struct daripada peta, anda sebenarnya mengakses salinan struct. Mengubah suai salinan ini tidak mengubah suai struktur asal dalam peta. Untuk menukar struct asal, anda perlu membacanya, mengubah suainya dan kemudian menulisnya semula pada peta.
Ini kerana Go menyimpan nilai struct dalam lokasi memori yang berasingan apabila ia ditetapkan pada peta . Mengubah suai salinan tidak menjejaskan nilai asal.
Kos Tersembunyi Tersirat
Tiada kos tersembunyi tersirat dalam mengubah suai medan struct dalam struktur data lain seperti kepingan atau peta . Tingkah laku adalah sama seperti dalam kes peta int kepada struct, di mana pengubahsuaian kepada salinan struct tidak menjejaskan asal.
Penggunaan Penunjuk
Anda boleh menggunakan penunjuk untuk mengubah suai nilai struktur asal yang ada. Dengan menyimpan penuding pada struct dan bukannya struct itu sendiri dalam peta, anda boleh terus mengakses dan mengubah suai medan struct asal.
Contoh:
import "fmt" type dummy struct { a int } func main() { x := make(map[int]*dummy) x[1] = &dummy{a: 1} x[1].a = 2 fmt.Println(x[1].a) // Output: 2 }
Dalam contoh ini, kami mengakses nilai struct menggunakan penuding, membolehkan kami mengubah suai medannya secara langsung.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengubah suai medan struktur dengan betul dalam peta go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!