自定义 golang sql.NullString Stringer 接口

我想覆盖所有实例 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 接口?


尚方宝剑之说
浏览 206回答 2
2回答

至尊宝的传说

我建议扩展 sql.NullString 并将方法覆盖或添加到扩展类型。// NS extends sql null stringtype NS struct{ sql.NullString }func (s NS) String() string {    return s.NullString.String}NS 将具有 sql.NullString 的方法以及添加到 NS 本身的方法。这是playgorund中的示例用法

白衣染霜花

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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go