Merungkai Tatasusunan Ditambah dalam Peta dalam Go
Dalam Go, peta ialah alatan berkuasa untuk mengatur data. Walau bagaimanapun, ia boleh menjadi rumit apabila cuba menambahkan nilai pada tatasusunan dalam peta tersebut. Pertimbangkan senario hipotetikal:
var MyMap map[string]Example type Example struct { Id []int Name []string }
Teka-teki Didedahkan
Coretan kod cuba menambahkan integer dan rentetan pada tatasusunan dalam peta yang dipanggil MyMap. Walau bagaimanapun, pelaksanaan mengandungi ralat penting:
MyMap["key1"] = Offerty.AppendOffer(1, "SomeText")
Di sini, Tawaran tidak boleh dikenali sebagai objek kerana ia tidak pernah ditakrifkan. Untuk menyelesaikan masalah ini, cipta contoh struct Contoh sebelum mengaitkannya dengan peta, seperti yang dilihat di bawah:
obj := &Example{[]int{}, []string{}} obj.AppendOffer(1, "SomeText")
Rujukan, Bukan Salin
Selain itu, coretan kod hanya mencipta salinan struct Contoh, bukan rujukan kepadanya. Untuk mengekalkan penunjuk kepada struct dalam peta:
MyMap = make(map[string]*Example) MyMap["key1"] = obj
Penyelesaian dalam Penglihatan
Dengan pengubahsuaian ini, kod yang disemak berjaya menambahkan nilai pada tatasusunan dalam peta :
package main import "fmt" type Example struct { Id []int Name []string } func (data *Example) AppendOffer(id int, name string) { data.Id = append(data.Id, id) data.Name = append(data.Name, name) } var MyMap map[string]*Example func main() { obj := &Example{[]int{}, []string{}} obj.AppendOffer(1, "SomeText") MyMap = make(map[string]*Example) MyMap["key1"] = obj fmt.Println(MyMap) }
Penyelesaian ini mengekalkan struct Contoh asal dalam peta, membolehkan kemas kini dan pengubahsuaian pada tatasusunannya dari skop luar.
Atas ialah kandungan terperinci Bagaimana untuk Menambahkan Nilai pada Tatasusunan Dalam Peta dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!