我想覆盖所有实例 sql.NullString 的 Stringer 接口,以便实例的输出instance.String而不是{ instance.String, instance.Valid }.这样做的正常方法是提供一个 Stringer 接口。使用 sql.NullString 时,Stringer 接口方法无法编译,因为已经存在 String 字段。解决方法是instance.String到处使用。type 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}如果 sql.NullString 之类的结构已经具有 String 字段,如何创建 Stinger 接口?
2 回答
至尊宝的传说
TA贡献1789条经验 获得超10个赞
我建议扩展 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 本身的方法。
白衣染霜花
TA贡献1796条经验 获得超10个赞
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 关注
- 205 浏览
添加回答
举报
0/150
提交
取消