Rumah > pembangunan bahagian belakang > Golang > Teknik pengekodan dan penyahkodan untuk jenis struktur dalam fungsi Golang

Teknik pengekodan dan penyahkodan untuk jenis struktur dalam fungsi Golang

王林
Lepaskan: 2023-05-15 23:21:11
asal
993 orang telah melayarinya

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.

  1. Definisi jenis struktur

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
}
Salin selepas log masuk
  1. Pengekodan dan penyahkodan JSON

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.

  • Pengekodan JSON

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

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}
Salin selepas log masuk
  1. Pengekodan dan penyahkodan jujukan bait

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

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}
Salin selepas log masuk
  1. Pengekodan dan penyahkodan Gob

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.

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

Kami menggunakan fungsi byte.Buffer dan gob.NewEncoder() untuk mengekod jenis struktur p ke dalam jujukan bait byteData.

  • Penyahkod Gob

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

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!

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