ホームページ >バックエンド開発 >Golang >go-couchdb を使用すると CouchDB で大文字の構造体フィールドだけが更新されるのはなぜですか?

go-couchdb を使用すると CouchDB で大文字の構造体フィールドだけが更新されるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-05 05:01:45993ブラウズ

Why Are Only Capitalized Struct Fields Updated in CouchDB Using go-couchdb?

大文字の使用は CouchDB 構造体のデータ ストレージに影響します

「github.com/mikebell-org/go-couchdb」ライブラリを利用してアクセスする場合CouchDB では、特殊な問題が発生します。頭文字が大文字の構造体フィールドのみがデータベースで更新されます。 inserts.

例:

type Person struct {
    name string
    Age  int
}

データベースに Person インスタンスを挿入すると:

joe := Person{
    name: "mike",
    Age:  190,
}

Age フィールドのみが追加されますデータベース。名前など、他の小文字のフィールドは省略されます。

動作の背後にある理由:

この動作は、フィールドの頭文字が小文字であることを規定している Go 言語仕様に由来しています。文字はエクスポートされません。その結果、JSON シリアル化パッケージ (json など) には、明示的に指示された場合にのみ、これらのフィールドが含まれます。

問題の解決:

小文字フィールドを組み込むにはデータベースに追加するには、JSON タグを利用します:

type Person struct {
    name string `json:"name"`
    Age  int    `json:"Age"`
}

json タグを指定すると、小文字の名前フィールドがJSON シリアル化用に明示的に公開され、データベースに永続化できるようになります。 JSON タグの詳細については、ドキュメントを参照してください。

以上がgo-couchdb を使用すると CouchDB で大文字の構造体フィールドだけが更新されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。