私のアプリケーションでは、文字列が人間が判読できるかどうかは問題ではありません。
質問する
135294 次
5 に答える
127
「一方向」のシリアライゼーション (デバッグやロギングなど) の場合fmt.Printf("%#v", var)
は、非常に便利です。(更新:出力を印刷する代わりに文字列に入れるには、str := fmt.Sprintf("%#v", var)
.
サイズが重要な場合は を使用できますが、フィールド名と構造体型の名前も含まれるので%v
気に入っています。%#v
3 番目のバリエーションは%+v
、フィールド名を含めますが、構造体型は含めません。
それらはすべてfmt documentationの上部に記載されています。
双方向のシリアライゼーションが必要な場合は、JSON、Gob、または XML が Go の最も簡単な組み込みオプションです。エンコーディング パッケージを参照してください。
于 2013-05-02T07:45:06.920 に答える
114
構造体を文字列にエンコードする一般的な方法の 1 つは、JSONを使用することです。
すべての情報 (各フィールドの特定の型など) を取得しない、エクスポートされたフィールドのみをシリアル化する、再帰値を処理しないなど、特定の制限があります。しかし、これはデータをシリアル化する単純な標準的な方法です。
作業例:
package main
import (
"fmt"
"encoding/json"
)
type s struct {
Int int
String string
ByteSlice []byte
}
func main() {
a := &s{42, "Hello World!", []byte{0,1,2,3,4}}
out, err := json.Marshal(a)
if err != nil {
panic (err)
}
fmt.Println(string(out))
}
この出力を与えます:
{"Int":42,"String":"Hello World!","ByteSlice":"AAECAwQ="}
于 2013-05-02T06:11:54.017 に答える