如何用go检查空字符串类型?

020*_*402 -3 go

D B:

column: name
value: NULL
Run Code Online (Sandbox Code Playgroud)

用gorm从DB中获取记录,然后

var name string
if name != nil {
  //
}
Run Code Online (Sandbox Code Playgroud)

出现错误:

invalid operation: name != nil (mismatched types string and nil)
Run Code Online (Sandbox Code Playgroud)

是的,go中int类型使用的是nil,但是这种情况下DB中的值却不是NULL""所以需要检查null,怎么办?

Dmy*_*kyi 6

您应该注意 sql 类型:https ://golang.org/pkg/database/sql/#NullString

只需在 select 语句中使用此类型的变量即可:

var yourstr sql.NullString
db.Select("Select your string", &yourstr)
Run Code Online (Sandbox Code Playgroud)

然后你可以检查它是否有效,如果无效,你可以分配你想要的任何值:

if !yourstr.Valid{
  yourstr.String = ""
}
Run Code Online (Sandbox Code Playgroud)

Gorm 中还有一个选择 NullString 的函数:

yourstr := dbmap.SelectNullStr("Select your string")
Run Code Online (Sandbox Code Playgroud)