Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mensiri dan Menyahsiri Struktur Kompleks dengan Cekap dalam Go?
Apabila bekerja dengan struktur data yang kompleks dalam Go, menjadi penting untuk mensirikannya untuk penyimpanan dan komunikasi yang cekap. Ini melibatkan pengekodan struct ke dalam rentetan untuk kegigihan dan kemudiannya menyahsirinya untuk memulihkan data asal.
Salah satu pendekatan paling berkesan untuk mensiri struct Go ialah menggunakan gob dan pakej base64. Begini cara ia berfungsi:
import ( "bytes" "encoding/base64" "encoding/gob" "fmt" ) type SX map[string]interface{} // go binary encoder func ToGOB64(m SX) string { b := bytes.Buffer{} e := gob.NewEncoder(&b) err := e.Encode(m) if err != nil { fmt.Println("failed gob Encode", err) } return base64.StdEncoding.EncodeToString(b.Bytes()) } // go binary decoder func FromGOB64(str string) SX { m := SX{} by, err := base64.StdEncoding.DecodeString(str) if err != nil { fmt.Println("failed base64 Decode", err) } b := bytes.Buffer{} b.Write(by) d := gob.NewDecoder(&b) err = d.Decode(&m) if err != nil { fmt.Println("failed gob Decode", err) } return m }
Untuk mensiri struct atau jenis tersuai, seperti struct Sesi, cuma tambahkan baris berikut pada kod:
func init() { gob.Register(SX{}) gob.Register(Session{}) // Register your custom struct }
Selain gob, terdapat alternatif format bersiri tersedia dalam Go (sehingga 2020). Untuk pensirilan struktur dinamik, anda mungkin mempertimbangkan untuk merujuk penanda aras 2022 untuk panduan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensiri dan Menyahsiri Struktur Kompleks dengan Cekap dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!