登录
首页 >  Golang >  Go问答

如何在Golang中实现接口和结构的toString方法

来源:stackoverflow

时间:2024-02-28 08:18:25 270浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《如何在Golang中实现接口和结构的toString方法》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

我有以下 go 界面:

type codeprovider interface {
    code() string

}

我已将 codeproviderimpl 定义如下:

type codeproviderimpl struct {
  errorcode string
}

这是上述 codeprovider 的“code()”方法的实现:

func (cp codeproviderimpl) code()  string {
    log.info("cp.errorcode: ", cp.errorcode)
    return cp.errorcode
}

我在另一个结构中使用 codeprovider,如下所示:

type jsonmessage struct {
  code codeprovider
}

我在我的测试用例中这样做:

codeprovider := &codeproviderimpl { errorcode: "1"}

    jm := &jsonmessage{         
        code: codeprovider
    }

现在,当我使用以下代码执行测试时,出现以下错误:

log.Info("jm.code: ", string(jm.code))

无法将 jm.code(codeprovider 类型)转换为 string 类型

如何打印 jm.code 的字符串表示形式?


解决方案


您当前正在尝试将 jm.code(codeprovider 结构类型)转换为字符串,这不是明显的转换。如果您尝试获取 codeprovider 结构的字符串表示形式,可以在 fmt.sprintf() 中使用“%+v”标志。

示例:

log.Info("jm.code: ", fmt.Sprintf("%+v", jm.code))

如果您只想调用 jm.code 代码提供程序中的 code 函数来获取代码字符串,请使用 jm.code.code()。

到这里,我们也就讲完了《如何在Golang中实现接口和结构的toString方法》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>