Go の YAML カスタム タグ

WBOY
リリース: 2024-02-10 10:18:08
転載
849 人が閲覧しました

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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!