Rumah >pembangunan bahagian belakang >Golang >peta golang untuk dihiris
Peta dalam bahasa Go ialah jenis pasangan nilai kunci yang tidak tertib, yang boleh mengakses nilai yang sepadan mengikut kekunci. Dalam sesetengah kes, kami perlu menukar data dalam peta kepada jenis hirisan untuk memudahkan operasi lain. Artikel ini memperkenalkan beberapa kaedah menukar peta golang kepada hirisan.
Kaedah 1: Gunakan gelung for untuk merentasi peta
Dengan merentasi peta melalui gelung for, anda boleh menambah pasangan nilai kunci dalam peta pada kepingan satu demi satu. Kod khusus adalah seperti berikut:
package main import "fmt" func main() { var m map[string]int m = make(map[string]int) m["one"] = 1 m["two"] = 2 m["three"] = 3 keys := make([]string, 0, len(m)) values := make([]int, 0, len(m)) for key, value := range m { keys = append(keys, key) values = append(values, value) } fmt.Println(keys) // [one two three] fmt.Println(values) // [1 2 3] }
Kaedah 2: Gunakan pustaka reflect
reflect ialah perpustakaan pantulan dalam bahasa Go, yang boleh mendapatkan maklumat jenis, kaedah panggilan, akses medan struktur, dsb. . Peta boleh ditukar kepada jenis reflect.Value melalui fungsi reflect.ValueOf(), dan kemudian pasangan nilai kunci boleh diperolehi melalui kaedah reflect.Value. Kod khusus adalah seperti berikut:
package main import ( "fmt" "reflect" ) func main() { var m map[string]int m = make(map[string]int) m["one"] = 1 m["two"] = 2 m["three"] = 3 keys := reflect.ValueOf(m).MapKeys() values := make([]int, 0, len(keys)) for _, key := range keys { values = append(values, m[key.String()]) } fmt.Println(keys) // [one two three] fmt.Println(values) // [1 2 3] }
Kaedah 3: Gunakan github.com/mitchellh/mapstructure library
mapstructure ialah perpustakaan untuk menghurai struktur, yang boleh menghuraikan pasangan nilai kunci dalam petakan ke dalam struktur bidang yang sepadan dalam . Pustaka ini menyediakan fungsi Decode(), yang boleh menghuraikan peta ke dalam sebarang jenis nilai pergi, termasuk jenis kepingan. Kod khusus adalah seperti berikut:
package main import ( "fmt" "github.com/mitchellh/mapstructure" ) func main() { var m map[string]int m = make(map[string]int) m["one"] = 1 m["two"] = 2 m["three"] = 3 values := make([]int, 0, len(m)) err := mapstructure.Decode(m, &values) if err != nil { fmt.Println(err) } else { fmt.Println(values) // [1 2 3] } }
Ringkasan:
Tiga kaedah di atas boleh menukar peta kepada jenis kepingan. Antaranya, kaedah satu mempunyai prestasi yang agak rendah dan sesuai untuk penukaran peta berskala kecil. Walaupun kaedah dua menggunakan perpustakaan refleksi, kecekapannya masih lebih tinggi daripada kaedah satu. Kaedah ketiga ialah menggunakan perpustakaan pihak ketiga, yang mudah dan pantas, serta sesuai untuk situasi di mana data peta agak kompleks. Kita boleh memilih kaedah penukaran yang berbeza mengikut senario tertentu.
Atas ialah kandungan terperinci peta golang untuk dihiris. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!