Struktur penukaran bahasa Go: 1. Tukar struct kepada peta, menggunakan fungsi "TypeOf" dan "ValueOf" dalam pakej reflect untuk mendapatkan jenis dan nilai struct, dan kemudian melintasi setiap medan struct , Dan simpan dalam peta 2. Tukar peta kepada struct Parameter input adalah peta dan penunjuk kepada struct melalui refleksi.
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi go1.20, komputer Dell g3.
Bahasa Go ialah bahasa pengaturcaraan yang ditaip secara statik Salah satu cirinya ialah mentakrif dan menyusun jenis data yang kompleks melalui struct. Penukaran struct adalah salah satu kemahiran asas yang mesti dikuasai dalam pembangunan bahasa Go. Artikel ini akan memperkenalkan cara menukar struct.
Takrifan struct:
Dalam bahasa Go, struct boleh ditakrifkan dengan cara berikut:
type Person struct { Name string Age int }
Takrifan ini mewakili struct jenis Orang, Ia mempunyai dua medan: Nama dan Umur.
Untuk struct yang ditentukan, kita boleh membuat instantiate objek dan menetapkan nilainya dengan cara berikut:
a := Person{ Name: "Alice", Age: 20, }
Dengan cara ini, kita boleh menetapkan pembolehubah jenis struct Assignment dan penggunaan dengan mudah.
1. Tukar struct kepada peta
Apabila kita perlu menukar jenis struct kepada jenis peta, kita boleh menggunakan kod berikut:
func StructToMap(obj interface{}) map[string]interface{} { objType := reflect.TypeOf(obj) objVal := reflect.ValueOf(obj) data := make(map[string]interface{}) for i := 0; i < objVal.NumField(); i++ { data[objType.Field(i).Name] = objVal.Field(i).Interface() } return data }
Parameter input fungsi ialah jenis antara muka, dan output ialah jenis peta. Fungsi ini menggunakan fungsi TypeOf dan ValueOf dalam pakej reflect untuk mendapatkan jenis dan nilai struct. Fungsi itu kemudian melelang melalui setiap medan struct dan menyimpannya ke dalam peta.
2. Tukar peta kepada struct
Apabila kita perlu menukar jenis peta kepada jenis struct, kita boleh menggunakan kod berikut:
func MapToStruct(m map[string]interface{}, s interface{}) { sType := reflect.TypeOf(s).Elem() sVal := reflect.ValueOf(s).Elem() for i := 0; i < sType.NumField(); i++ { field := sType.Field(i) val := reflect.ValueOf(m[field.Name]) sVal.Field(i).Set(val) } }
Parameter input fungsi ialah peta dan penunjuk kepada struct, dan outputnya kosong. Fungsi ini memetakan nilai dalam peta ke medan yang sepadan dalam struct melalui refleksi.
Ringkasan:
Melalui pengenalan di atas, kita dapat melihat bahawa dalam bahasa Go, menukar struct adalah sangat mudah dan boleh dicapai dengan mudah dengan menggunakan refleksi. Melalui kaedah di atas, kami dengan senang hati boleh menggunakan jenis struct dan menukarnya semasa proses pembangunan bahasa Go, supaya dapat berkembang dengan lebih cekap
Atas ialah kandungan terperinci Bagaimana untuk menukar struct dalam bahasa go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!