Go での効率的なシリアル化と逆シリアル化
Golang は、構造体を文字列にシリアル化および逆シリアル化するための複数のアプローチを提供します。 Session 構造体のような複雑な構造を扱う場合、パフォーマンスを維持しながらデータの忠実性を確保するアプローチを採用することが重要です。
GOB と Base64 を使用する
効果的な方法の 1 つは次のとおりです。 GOB エンコーダと Base64 エンコードを使用します。これを実現する方法は次のとおりです:
import ( "encoding/base64" "encoding/gob" "bytes" ) // Custom type for serialization type Session struct { Properties map[string]interface{} Permissions []int64 } // GOB encoder func ToGOB64(m Session) string { b := bytes.Buffer{} e := gob.NewEncoder(&b) err := e.Encode(m) if err != nil { panic(err) } return base64.StdEncoding.EncodeToString(b.Bytes()) } // GOB decoder func FromGOB64(str string) Session { m := Session{} by, err := base64.StdEncoding.DecodeString(str) if err != nil { panic(err) } b := bytes.Buffer{} b.Write(by) d := gob.NewDecoder(&b) err = d.Decode(&m) if err != nil { panic(err) } return m }
カスタム タイプ (この場合はセッション) をサポートするには、それらを GOB エンコーダーに登録できます:
func init() { gob.Register(Session{}) }
Otherシリアル化形式
GOB が適切でない場合は、Go で使用できる代替シリアル化形式があります。 JSON、XML、protobuf として。各形式には、さまざまな利点とトレードオフがあります。
パフォーマンス
シリアル化と逆シリアル化のパフォーマンスは、データのサイズと選択した形式に大きく依存します。 GOB は比較的高速になる傾向がありますが、JSON と XML は低速ですが、人間が読みやすいものになります。さまざまな形式のベンチマークを行うと、特定のアプリケーションに最適なオプションを決定するのに役立ちます。
以上がGOB と Base64 を使用して Go で構造体を効率的にシリアル化および逆シリアル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。