Dalam bahasa Go, pensirilan dan penyahsirian biasanya dilaksanakan dengan menukar data kepada aliran bait (atau format lain yang boleh diangkut). Berikut ialah beberapa kaedah pensirilan dan penyahsirilan yang biasa digunakan:
- Pensirilan dan penyahsirilan JSON: Bahasa Go mempunyai pengekodan/json perpustakaan standard terbina dalam dan anda boleh menggunakan json.Marshal() untuk mensiri struktur data ke dalam bait format JSON strim, gunakan json.Unmarshal() untuk menyahsiri strim bait format JSON ke dalam struktur data.
import "encoding/json" // 序列化为JSON data, err := json.Marshal(obj) // 反序列化JSON err = json.Unmarshal(data, &obj)
- Siri dan penyahserilan XML: Bahasa Go mempunyai pengekodan/xml pustaka standard terbina dalam Anda boleh menggunakan xml.Marshal() untuk mensiri struktur data ke dalam aliran bait dalam format XML dan gunakan xml.Unmarshal(. ) untuk Menyahseri strim bait berformat XML ke dalam struktur data.
import "encoding/xml" // 序列化为XML data, err := xml.Marshal(obj) // 反序列化XML err = xml.Unmarshal(data, &obj)
- gob bersiri dan penyahsiri: Bahasa Go mempunyai pengekodan/gob perpustakaan standard terbina dalam Anda boleh menggunakan gob.NewEncoder() dan gob.NewDecoder() untuk membuat pengekod dan penyahkod, dan masing-masing memanggil Encode() dan Decode. . () kaedah untuk bersiri dan desirialisasi.
import "encoding/gob" // 序列化为字节流 var buffer bytes.Buffer encoder := gob.NewEncoder(&buffer) err = encoder.Encode(obj) data := buffer.Bytes() // 反序列化字节流 decoder := gob.NewDecoder(bytes.NewReader(data)) err = decoder.Decode(&obj)
- Protocol Buffers (protobuf) bersiri dan penyahserilan: Bahasa Go menyediakan perpustakaan pihak ketiga github.com/golang/protobuf/proto, yang boleh menggunakan protokol protobuf untuk pensirilan dan penyahsiran yang cekap.
import "github.com/golang/protobuf/proto" // 序列化为字节流 data, err := proto.Marshal(obj) // 反序列化字节流 err = proto.Unmarshal(data, obj)
Di atas adalah beberapa kaedah bersiri dan penyahserilan yang biasa digunakan. Pilih kaedah yang sesuai mengikut keperluan dan senario tertentu.