Go で文字列配列をバイト配列としてエンコードおよびデコードする
文字列配列 ([]string) をバイト配列 ([ ]byte) をディスク ストレージに使用する場合、最適な解決策にはシリアル化形式を考慮する必要があります。次のようなさまざまな形式により、さまざまな機能と効率のトレードオフが提供されます。
Gob:
Gob は、Go コードに適したバイナリ形式です。大きな文字列配列の場合はスペース効率が高くなります:
enc := gob.NewEncoder(file) enc.Encode(data)
デコードの場合:
var data []string dec := gob.NewDecoder(file) dec.Decode(&data)
JSON:
JSON は広く使用されている形式です。簡単にエンコードおよびデコード可能です:
enc := json.NewEncoder(file) enc.Encode(data)
デコードの場合:
var data []string dec := json.NewDecoder(file) dec.Decode(&data)
XML:
XML は Gob や JSON と比較してオーバーヘッドが高くなります。ルートと文字列のラッピング タグが必要です:
type Strings struct { S []string } enc := xml.NewEncoder(file) enc.Encode(Strings{data})
デコードの場合:
var x Strings dec := xml.NewDecoder(file) dec.Decode(&x) data := x.S
CSV:
CSV は文字列値のみを処理します。複数の行または複数のレコードを使用できます。次の例では、複数のレコードを使用しています:
enc := csv.NewWriter(file) for _, v := range data { enc.Write([]string{v}) } enc.Flush()
デコード用:
var data string dec := csv.NewReader(file) for err == nil { s, err := dec.Read() if len(s) > 0 { data = append(data, s[0]) } }
パフォーマンスに関する考慮事項:
形式の最適な選択は、次によって異なります。特定の要件。スペース効率を優先する場合は、Gob と JSON が良い選択肢となります。 XML はオーバーヘッドが高くなりますが、複雑なデータ構造をサポートします。 CSV は、単純な文字列配列に最適です。
カスタム エンコードの場合、エンコード/バイナリ パッケージを利用できますが、より高いレベルの実装作業が必要です。
以上がGo で文字列配列をバイト配列として効率的にエンコードおよびデコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。