我想覆蓋所有實例sql的Stringer接口??兆址?,以便實例的輸出不是 。instance.String{ instance.String, instance.Valid }執(zhí)行此操作的正常方法是提供 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}如果已經是結構,如何創(chuàng)建Stinger接口,如sql。NullString,有一個字符串字段?
2 回答

蕭十郎
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 中的用法示例

慕雪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 關注
- 126 瀏覽
添加回答
舉報
0/150
提交
取消