ホームページ >バックエンド開発 >Golang >golangでエスケープ文字を含むプレーン文字列として構造を出力するにはどうすればよいですか?

golangでエスケープ文字を含むプレーン文字列として構造を出力するにはどうすればよいですか?

WBOY
WBOY転載
2024-02-09 10:10:29664ブラウズ

golangでエスケープ文字を含むプレーン文字列として構造を出力するにはどうすればよいですか?

Golang では、エスケープ文字を含むプレーンな文字列として構造を出力することが一般的な要件です。これは、fmt パッケージの Sprint 機能を使用して実現できます。 Sprint 関数は、構造を文字列に変換し、その中の特殊文字を自動的にエスケープします。 %#v プレースホルダーを使用すると、印刷される文字列にエスケープ文字が確実に含まれるようになります。以下は、構造体をエスケープ文字を含むプレーン文字列として出力する方法を示す簡単なコード例です。 「行く」 パッケージメイン 輸入 ( 「fmt」 ) type 人の構造体 { 名前文字列 年齢整数 } 関数 main() { p := 人{ 名前:「ジョン」、 年齢:30歳、 } str := fmt.Sprintf("%#v", p) fmt.Println(str) } 「」 上記のコードでは、Person 構造体を定義し、インスタンス p を作成します。次に、関数 fmt.Sprintf を使用して、p をエスケープ文字を含むプレーン文字列に変換します。最後に、fmt.Println 関数を使用して文字列を出力します。コードを実行すると、出力結果は「main.person{Name:"John", Age:30}` になります。ここで、二重引用符とバックスラッシュはエスケープ文字を表します。このようにして、エスケープ文字を含むプレーンな文字列として構造を正常に出力しました。

質問内容

golangの構造体をエスケープ文字を含む文字列として出力しようとしているのですができません。

次のように構造を印刷したい:

"{\"データ\":\"私の名前\",\"値\":\"ashutosh\"}"

これが私が試したことです。

リーリー

しかし、このように印刷されます。

{"データ":"名前","値":"ashutosh"}

誰かが次の出力を取得するのを手伝ってくれますか? :

"{\"data\":\"myname\",\"value\":\"ashutosh\"}"

解決策

使用できる任意の文字列を引用符で囲みます。 #strconv.quote(): リーリー p>

fmt パッケージには文字列を引用するための動詞もあります: %q:

文字列とバイトのスライス (これらの動詞と同等に処理されます):

リーリー

したがって、次のように印刷することもできます:

リーリー

これはバイト スライスでも機能するため、

string 変換も必要ありません。 リーリー これらすべての出力 (

go playground

で試してください): リーリー

以上がgolangでエスケープ文字を含むプレーン文字列として構造を出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。