猿问

Custom golang sql.空字符串字符串接口

我想覆盖所有实例sql的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

}


如果已经是结构,如何创建Stinger接口,如sql。NullString,有一个字符串字段?



慕容3067478
浏览 107回答 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 中的用法示例

慕雪6442864

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

相关分类

Go
我要回答