Go 構造体で未設定値と空白/空の値を区別する: 正しく行うには?

DDD
リリース: 2024-10-24 10:57:30
オリジナル
250 人が閲覧しました

Distinguishing Between Not Set and Blank/Empty Values in Go Structs: How to Do It Correctly?

Go 構造体で未設定値と空白/空の値を適切に区別する

Go では、構造体を扱うとき、設定されていない値を区別することが不可欠です ( 「nil」と呼ばれます)と、明示的に空であるもの(空の文字列など)です。この区別は、データベースと対話するとき、またはデータ検証を実行するときに重要になります。

値のステータスの決定

次の例を考えてみましょう。

<code class="go">type Organisation struct {
    Category string
    Code     string
    Name     string
}</code>
ログイン後にコピー

カテゴリがフィールドが設定されている場合、その値が空かどうかを単純にチェックすることはできません。空の文字列に設定されていても false が返されるためです。

ポインタを使用して Null 値を処理する

1 つの方法は次のとおりです。設定解除される可能性のあるフィールドにポインターを使用します。デフォルトでは、ポインターの値は nil で、有効な値を指していないことを示します。これにより、未設定の値と空でない値を簡単に区別できます。

<code class="go">type Organisation struct {
    Category *string // Pointer to a string
    Code     *string // Pointer to a string
    Name     *string // Pointer to a string
}</code>
ログイン後にコピー

Category フィールドが設定されていない場合、そのポインター値は nil になります。ただし、ポインタの使用には、実際の値にアクセスするときに複雑さが増し、混乱が生じる可能性があるなど、特定の制限があります。

データベース対話における Null 値の処理

データベースを扱うとき、Null 値が発生するのが一般的です。 。これらを適切に処理するには、database/sql パッケージやその sql.NullString 型などのサードパーティ ライブラリの使用を検討してください。

<code class="go">type NullString struct {
    String string
    Valid  bool
}</code>
ログイン後にコピー

sql.NullString を使用すると、null 文字列値と null 以外の文字列値の両方を表すことができます。 。その String フィールドには実際の値が含まれており、Valid は値が null かどうかを示します。この型は、データベース操作で null 値を処理する便利な方法を提供します。

以上がGo 構造体で未設定値と空白/空の値を区別する: 正しく行うには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!