ホームページ  >  記事  >  バックエンド開発  >  Go 構造体で未設定値と空白/空の値を区別する: 正しく行うには?

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

DDD
DDDオリジナル
2024-10-24 10:57:30237ブラウズ

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 サイトの他の関連記事を参照してください。

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