Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengubah Suai Medan Struktur Dalam Nilai Peta Go?
Mengalamatkan Nilai Peta
Dalam Go, cuba mengubah suai medan struct terus dalam nilai peta, seperti yang ditunjukkan dalam contoh berikut, akan mengakibatkan ralat penyusunan:
import ( "fmt" ) type pair struct { a float64 b float64 } func main() { // Create a map where values are of the "pair" type. dictionary := make(map[string]pair) // Add an element to the map. dictionary["xxoo"] = pair{5.0, 2.0} fmt.Println(dictionary["xxoo"]) // Output: {5 2} // Attempt to modify a field within the map value. dictionary["xxoo"].b = 5.0 // Error: cannot assign to dictionary["xxoo"].b }
Mesej ralat ini ditemui kerana nilai peta tidak boleh ditangani. Kebolehalamatan ialah konsep asas dalam Go, dan ia merujuk kepada keupayaan untuk mencari alamat memori pembolehubah. Nilai tidak boleh alamat tidak boleh diubah suai secara tidak langsung, kerana percubaan untuk mengakses medan struktur nilai tidak boleh alamat mengakibatkan ralat penyusunan.
Untuk menyelesaikan isu ini, terdapat dua pendekatan utama:
Menggunakan Nilai Penunjuk
Satu pendekatan ialah menggunakan nilai penunjuk sebagai nilai peta. Arahan ini menjadikan nilai boleh ditangani, membenarkan pengubahsuaian medan. Berikut ialah contoh:
import ( "fmt" ) type pair struct { a float64 b float64 } func main() { // Create a map where values are pointers to "pair" structs. dictionary := make(map[string]*pair) // Add an element to the map. dictionary["xxoo"] = &pair{5.0, 2.0} fmt.Println(dictionary["xxoo"]) // Output: &{5 2} // Modify a field within the pointed-to struct. dictionary["xxoo"].b = 5.0 fmt.Println(dictionary["xxoo"].b) // Output: 5 }
Penyalinan atau Penggantian Nilai
Sebagai alternatif, anda boleh menggunakan nilai yang tidak boleh ditangani dengan menyalin nilai atau menggantikannya sepenuhnya. Berikut ialah dua contoh:
// Value Copying dictionary["xxoo"] = pair{5.0, 5.0}
// Value Replacement p := dictionary["xxoo"] p.b = 5.0 dictionary["xxoo"] = p
Kedua-dua pendekatan ini membolehkan anda mengubah suai struct "pasangan" dalam peta.
Atas ialah kandungan terperinci Bagaimana untuk Mengubah Suai Medan Struktur Dalam Nilai Peta Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!