我在Golang应用程序中有这样的struct
:
type Employee struct {
ID int `json:"employee_id"`
Email *string `json:"employee_email"`
LastName *string `json:"employee_last_name"`
FirstName *string `json:"employee_first_name"`
Sex *string `json:"employee_sex"`
}
此结构的某些字符串字段可以为空。如果我使用*string
应用程序,请返回""
。如果使用sql.NullString
,例如返回这样的结果:
"employee_last_name": {
String: "",
Valid: true
}
我想显示null
是字符串字段为空。
在documentation中,我找到了这样的代码:
type NullString struct {
String string
Valid bool
}
func (ns *NullString) Scan(value interface{}) error {
if value == nil {
ns.String, ns.Valid = "", false
return nil
}
ns.Valid = true
return convertAssign(&ns.String, value)
}
func (ns NullString) Value() (driver.Value, error) {
if !ns.Valid {
return nil, nil
}
return ns.String, nil
}
据我了解,这段代码可以帮助我解决问题,对吗?我需要在应用程序中导入什么才能使用convertAssign
函数?
答案 0 :(得分:1)
编辑:
根据oracle go driver docs,您无法执行以下操作:
sql.NullString
不支持sql.NullString:Oracle DB不 区分空字符串(“”)和NULL
原始答案:
需要有关您要连接的SQL数据库类型的更多详细信息。我知道go SQLite3 pkg-github.com/mattn/go-sqlite3
-支持将nil
设置为类型*string
的值。
检查用于连接数据库的驱动程序的详细信息。例如,对于MySQL,默认情况下未设置将SQL日期字段放入go的本机time.Time
结构类型-必须为turned on at the driver level。
答案 1 :(得分:0)
在Go语言规范中,nil
对于类型string
无效。默认值为零,""
。