Go 構造体における nil 値と空の値の区別
Go では、nil 値を区別するのが難しい場合があります (つまり、決してset)と空または空白の値(空の文字列など)。この区別は、データベースまたはユーザー入力からのデータを処理する場合に重要です。
問題:
次の Go 構造体を考えてみましょう:
type Organisation struct { Category string Code string Name string }
カテゴリ フィールドがユーザーによって設定または空の文字列として保存されていない場合は、この値が欠損値を表しているのか、空のユーザー選択を表しているのかを判断することが重要です。
解決策:
1 つの方法は、ポインター フィールドを使用することです。
type Organisation struct { Category *string Code *string Name *string }
ポインター フィールドでは、nil 値は未設定のフィールドを表し、空の文字列を持つ非 nil 値は空の選択を示します。
データベース処理:
Go では、文字列型のゼロ値は空の文字列です。したがって、標準の文字列型を使用して未設定の文字列フィールドと空の文字列フィールドを区別することは不可能です。データベース統合の場合:
例:
sql.NullString:
<code class="go">type Organisation struct { Category sql.NullString Code string Name string } // Check if Category is set and not NULL if organisation.Category.Valid && organisation.Category.String != "" { // Category was set and has a value } else { // Category is either unset or NULL }</code>
以上がGo 構造体で Nil と空の値を区別するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。