Rumah > masalah biasa > teks badan

Bagaimana untuk menukar struct dalam bahasa go

DDD
Lepaskan: 2023-06-16 12:01:31
asal
1365 orang telah melayarinya

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.

Bagaimana untuk menukar struct dalam bahasa go

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
}
Salin selepas log masuk

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,
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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)
}
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!