我想覆盖所有实例sql的Stringer接口。空字符串,以便实例的输出不是 。instance.String{ instance.String, instance.Valid }执行此操作的正常方法是提供 Stringer 接口。使用 sql.NullString Stringer 接口方法无法编译,因为已经存在一个 String 字段。解决方法是在任何地方使用。instance.Stringtype NullString sql.NullString// this fails to compile as sql.NullString has a field named String func (x *NullString) String() string { if !x.Valid { x.String = "" } return x.String}如果已经是结构,如何创建Stinger接口,如sql。NullString,有一个字符串字段?
2 回答
![?](http://img1.sycdn.imooc.com/54584f6d0001759002200220-100-100.jpg)
萧十郎
TA贡献1815条经验 获得超13个赞
我建议扩展 sql。NullString 和重写或向扩展类型添加方法。
// NS extends sql null string
type NS struct{ sql.NullString }
func (s NS) String() string {
return s.NullString.String
}
NS将具有sql的方法。NullString以及附加到NS本身的方法也是如此。
以下是 playgorund 中的用法示例
![?](http://img1.sycdn.imooc.com/545847f50001126402200220-100-100.jpg)
慕雪6442864
TA贡献1812条经验 获得超5个赞
import "database/sql/driver"
type NullString struct { ns sql.NullString }
func (s *NullString) Scan(value interface{}) error {
return s.ns.Scan(value)
}
func (s NullString) Value() (driver.Value, error) {
return s.ns.Value()
}
func (s NullString) String() string {
return s.ns.String
}
- 2 回答
- 0 关注
- 106 浏览
添加回答
举报
0/150
提交
取消