GORM では、NULL の可能性があるフィールドに sql.NullString を使用すると、エラー:
cannot use "a string goes here", (type string) as type sql.NullString in field value
簡単な GORM 検証例を実行しようとしています。
sql.NullString は文字列型ではなく、次のように定義された構造体型です。
type NullString struct { String string Valid bool // Valid is true if String is not NULL }
正しく初期化するには、次の構文を使用します:
db.Create(&Day{ Nameday: "Monday", Dateday: "23-10-2019", Something: sql.NullString{String: "a string goes here", Valid: true}, Holyday: false, })
または、より単純な初期化構文を使用する場合:
カスタムの null 許容文字列型を定義します。
type MyString string
Overrideメソッド Value() および Scan() は次のようになります。
func (s MyString) Value() (driver.Value, error) { if s == MyStringNull { return nil, nil } return []byte(s), nil } 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 }
Something フィールドを MyString として宣言し、意図したとおりに初期化します。
db.Create(&Day{ Nameday: "Monday", Dateday: "23-10-2019", // Here, an untyped string constant will explicitly convert to MyString because they have the same underlying type. Something: "a string goes here", Holyday: false, })
以上がGORM と sql.NullString を使用して Null 許容文字列フィールドを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。