Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mensiri dan Menyahsiri Struktur Kompleks dengan Cekap dalam Go?

Bagaimanakah Saya Boleh Mensiri dan Menyahsiri Struktur Kompleks dengan Cekap dalam Go?

DDD
DDDasal
2024-11-30 12:38:12394semak imbas

How Can I Efficiently Serialize and Deserialize Complex Structs in Go?

Mensiri dan Menyahseri Struktur Kompleks 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.

Menggunakan Gob dan Base64

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
}

Pensirian Struktur Tersuai

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
}

Pilihan Serialisasi Tambahan

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!

Kenyataan:
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