Go では、構造体を扱うとき、設定されていない値を区別することが不可欠です ( 「nil」と呼ばれます)と、明示的に空であるもの(空の文字列など)です。この区別は、データベースと対話するとき、またはデータ検証を実行するときに重要になります。
次の例を考えてみましょう。
<code class="go">type Organisation struct { Category string Code string Name string }</code>
カテゴリがフィールドが設定されている場合、その値が空かどうかを単純にチェックすることはできません。空の文字列に設定されていても false が返されるためです。
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 値が発生するのが一般的です。 。これらを適切に処理するには、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 サイトの他の関連記事を参照してください。