文字列型を sql.NullString として使用できません
GORM モデルの作成時に、 NULL 可能にする必要があるフィールドの文字列タイプ。この問題は、null 許容フィールドに sql.NullString を使用するときに発生します。
問題:
発生するエラー、「"文字列はここにあります" を使用できません」( type string) as type sql.NullString in field value」は、文字列を sql.NullString フィールドに直接割り当てようとしていることを示します。ただし、sql.NullString は文字列型ではなく、null 許容文字列を表すように設計された構造体型です。
解決策:
この問題を解決するには、初期化する必要があります。 sql.NullString フィールドを正しく入力します。次のように初期化する必要があります:
<code class="go">db.Create(&Day{ Nameday: "Monday", Dateday: "23-10-2019", Something: sql.NullString{String: "a string goes here", Valid: true}, Holyday: false, })</code>
代替解決策:
Null 許容文字列の簡略化された構文を使用したい場合は、次のようにして独自の Null 許容文字列型を作成できます。 sql.Scanner インターフェイスと driver.Valuer インターフェイスを実装し、NULL バイトを利用して NULL 値を通知します。
<code class="go">type MyString string const MyStringNull MyString = "\x00" // implements driver.Valuer, will be invoked automatically when written to the db func (s MyString) Value() (driver.Value, error) { if s == MyStringNull { return nil, nil } return []byte(s), nil } // implements sql.Scanner, will be invoked automatically when read from the db func (s *MyString) Scan(src interface{}) error { switch v := src.(type) { case string: *s = MyString(v) case []byte: *s = MyString(v) case nil: *s = MyStringNull } return nil }</code>
この型を使用すると、Something フィールドを次のように初期化できます:
<code class="go">db.Create(&Day{ Nameday: "Monday", Dateday: "23-10-2019", Something: "a string goes here", Holyday: false, })</code>
以上がGORM モデルで Null 許容文字列を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。