Go 構造体における未設定値と空の値の区別
Go では、構造体を定義するときに、次の値を区別する必要がある場合があります。意図的に設定解除され、値は単に空です。これは、データベースの永続性と正確なデータ処理を保証するために重要です。
次の例を考えてみましょう:
<code class="go">type Organisation struct { Category string Code string Name string }</code>
Category フィールドが一度も設定されなかったのか、それとも意図的に設定されたのかを確認したいとします。空の文字列として。フィールドにポインター (*string など) を使用しても、この問題は解決されません。ポインターのゼロ値は nil であり、未設定の値と空の値を区別できないためです。
これに対処するには、以下を利用できます。データベース/SQL パッケージの sql.NullString などのカスタム型。 NULL 状態を追跡し、次のシナリオを区別できるようにします:
データベースのスキャンとパラメーターのバインド中、sql.NullString 型は NULL 状態を自動的に処理します。
たとえば、NullString フィールドをスキャンするには:
<code class="go">err := db.QueryRow("SELECT category FROM organisations WHERE id = ?", id).Scan(&org.Category)</code>
NullString 値をデータベース パラメーターにバインドするには:
<code class="go">_, err := db.Exec("INSERT INTO organisations (category) VALUES (?)", org.Category)</code>
このアプローチにより、未設定の値と空の値を区別し、正確なデータベースの永続性を確保できます。
以上がGo 構造体で未設定の値と空の値を区別するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。