为了账号安全,请及时绑定邮箱和手机立即绑定

自定义 golang sql.NullString Stringer 接口

自定义 golang sql.NullString Stringer 接口

Go
尚方宝剑之说 2022-07-25 11:21:48
我想覆盖所有实例 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 本身的方法。

这是playgorund中的示例用法


查看完整回答
反对 回复 2022-07-25
?
白衣染霜花

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

}


查看完整回答
反对 回复 2022-07-25
  • 2 回答
  • 0 关注
  • 205 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信