Rumah > Artikel > pembangunan bahagian belakang > Teknik pengekodan dan penyahkodan untuk jenis struktur dalam fungsi Golang
Golang ialah bahasa pengaturcaraan yang sangat berkuasa yang menyediakan banyak jenis dan fungsi terbina dalam untuk membantu pengaturcara menulis kod yang cekap dengan cepat. Antaranya, jenis struktur adalah yang paling biasa digunakan. Apabila berurusan dengan komunikasi rangkaian, penyimpanan data dan penghantaran, dsb., kita biasanya perlu mengekod data jenis struktur ke dalam data binari atau mensirikannya ke dalam rentetan dalam format JSON untuk penghantaran. Artikel ini akan memperkenalkan beberapa teknik pengekodan dan penyahkodan untuk jenis struktur fungsi Golang.
Di Golang, definisi jenis struktur memerlukan penggunaan kata kunci jenis dan kata kunci struct. Sebagai contoh, perkara berikut mentakrifkan jenis struktur Orang, yang mengandungi dua medan: Nama dan Umur:
type Person struct { Name string Age int }
JSON adalah ringan, mudah untuk membaca dan menulis format pertukaran data. Di Golang, kita boleh menggunakan fungsi Marshal() dan Unmarshal() dalam pakej json untuk melaksanakan pengekodan dan penyahkodan JSON jenis struktur.
Apabila pengekodan, kita perlu menukar jenis struktur kepada tatasusunan bait jenis []bait, yang boleh dicapai melalui json.Marshal( ) fungsi. Sebagai contoh, contoh berikut mengekod contoh p jenis Orang ke dalam rentetan dalam format JSON:
p := Person{"Tina", 28} jsonData, _ := json.Marshal(p) fmt.Println(string(jsonData)) // {"Name":"Tina","Age":28}
Apabila menyahkod, kita perlu menghuraikan JSON rentetan ke dalam jenis Struktur. Ini boleh dicapai melalui fungsi json.Unmarshal(). Sebagai contoh, contoh berikut menyahkod rentetan JSON jsonStr kepada contoh jenis Orang:
jsonStr := `{"Name":"Tina", "Age": 28}` var p Person _ = json.Unmarshal([]byte(jsonStr), &p) fmt.Println(p) // {Tina 28}
Dalam proses komunikasi rangkaian atau penyimpanan data , kami Ia juga perlu untuk menyusun jenis struktur ke dalam urutan bait untuk penghantaran. Sebagai contoh, untuk mensirikan contoh jenis Person p ke dalam jujukan bait byteData:
buf := new(bytes.Buffer) binary.Write(buf, binary.LittleEndian, &p) byteData := buf.Bytes() fmt.Printf("%x ", byteData) // 54696e61001c0000
Kami menggunakan fungsi bait.Buffer dan binary.Write() untuk mensirikan jenis struktur p ke dalam jujukan bait byteData. Parameter kedua fungsi binari.Write() menentukan kaedah pemprosesan pesanan bait, di sini format LittleEndian digunakan.
Begitu juga, kita juga boleh menggunakan fungsi binary.Read() untuk menyahsiri byteData dalam bentuk yang sama, contohnya:
var q Person err := binary.Read(bytes.NewReader(byteData), binary.LittleEndian, &q) if err != nil { fmt.Println(err) } fmt.Println(q) // {Tina 28}
Gob ialah format pengekodan yang disertakan dengan Golang dan sering digunakan semasa panggilan RPC dan penghantaran data. Di Golang, pakej gob juga disediakan untuk pengekodan dan penyahkodan Gob.
Kita boleh menggunakan fungsi gob.NewEncoder() untuk mencipta contoh pengekod dan kemudian menggunakan kaedah Encode() untuk mengekod jenis struct ke dalam bait urutan. Contohnya, untuk mengekod contoh p jenis Orang ke dalam jujukan bait byteData:
var byteData bytes.Buffer enc := gob.NewEncoder(&byteData) err := enc.Encode(&p) if err != nil { fmt.Println(err) } fmt.Printf("%x ", byteData.Bytes()) // 026864073544696e61001c
Kami menggunakan fungsi byte.Buffer dan gob.NewEncoder() untuk mengekod jenis struktur p ke dalam jujukan bait byteData.
Apabila menyahkod, kita juga perlu menggunakan pakej gob. Cipta contoh penyahkod dan gunakan kaedah Decode() untuk menyahkod jujukan bait. Sebagai contoh, nyahkod byteData yang dikodkan dalam contoh di atas menjadi contoh q jenis Orang:
dec := gob.NewDecoder(&byteData) var q Person err := dec.Decode(&q) if err != nil { fmt.Println(err) } fmt.Println(q) // {Tina 28}
Ringkasan
Jenis struktur ialah jenis data yang biasa digunakan di Golang. Ia digunakan dalam pemprosesan komunikasi rangkaian dan Apabila menyimpan dan menghantar data, kita selalunya perlu mengekod jenis struktur ke dalam data binari atau mensirikannya ke dalam rentetan untuk penghantaran. Artikel ini memperkenalkan beberapa teknik pengekodan dan penyahkodan untuk jenis struktur fungsi Golang, termasuk pengekodan dan penyahkodan JSON, pengekodan dan penyahkodan jujukan bait serta pengekodan dan penyahkodan Gob. Teknik ini boleh membantu kami menyelesaikan tugas pemindahan dan penyimpanan data dengan cepat dan cekap.
Atas ialah kandungan terperinci Teknik pengekodan dan penyahkodan untuk jenis struktur dalam fungsi Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!