ホームページ  >  記事  >  バックエンド開発  >  Go の YAML カスタム タグ

Go の YAML カスタム タグ

WBOY
WBOY転載
2024-02-10 10:18:08849ブラウズ

Go 中的 YAML 自定义标签

php Editor Banana では、Go 言語の YAML カスタム タグを紹介します。 YAML は軽量のデータシリアル化形式であり、Go 言語は強力なプログラミング言語として、当然 YAML のサポートを提供します。 Go では、カスタム タグを使用して YAML データ構造を定義し、YAML データをより適切に解析および処理できます。カスタム タグを使用すると、YAML データを Go の構造に簡単にマッピングでき、より柔軟で便利なデータ処理を実現できます。 GoにおけるYAMLカスタムタグの使い方と注意点を詳しく紹介します。

質問の内容

Go にこれらの入れ子構造があり、そのプロパティにカスタム タグを追加しました。 リーリー

ダミーのインスタンスをいくつか作成し、スライスに追加しました。

リーリー

最後にデータを整理してファイルに書き込みます

リーリー

しかし、取得した yaml には小文字のタグ名ではなく、大文字の構造名が含まれています。 なぜこれが起こるのか、そしてそれを修正する方法を知っている人はいますか?

回避策

使用している yaml 実装が原因です。たとえば、

gopkg.in/yaml.v3 を使用すると機能します。 go playground で試してみてください。したがって、解決策の 1 つは、gopkg.in/yaml.v3 のような別の yaml 実装を使用することです。

コメントの中で、

https:// /pkg.go.dev/sigs.k8s.io/[email protected] を使用していると述べました。パッケージのドキュメントには次のように書かれています:

つまり、ライブラリはまず go-yaml を使用して yaml を json に変換し、次に

json.marshaljson.unmarshal を使用して構造体で変換を行います。これは、go-yaml とは異なり、json 構造タグとカスタム json メソッド marshaljson および unmarshaljson を効果的に再利用することを意味します。

So

sigs.k8s.io/[email protected]< /a> 最初のものは json にマーシャリングされます。小文字のフィールド名が必要な場合は、yaml タグの代わりに json タグを使用します。 リーリー この変更により、出力には小文字の名前が含まれます (

go playground

で試してください): リーリー これを機能させるには、

yaml

の代わりに json タグを使用する必要があることに注意してください。 sigs.k8s.io/<a href="/cdn- cgi/ l/email-protection" class="__cf_email__" data-cfemail="047d6569684472352a372a34">[email-protected]</a> パッケージの癖。 この パッケージおよび他の yaml 実装で動作させたい場合は、 json タグと yaml タグの両方を 指定できます。 リーリー

以上がGo の YAML カスタム タグの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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