我想覆蓋所有實例 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 關注
- 233 瀏覽
添加回答
舉報
0/150
提交
取消