我有以下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
}

我在另一个Struct中使用codeProvider,如下所示:
type JsonMessage struct {
  code CodeProvider
}

我在测试用例中这样做:
codeProvider := &CodeProviderImpl { errorCode: "1"}

    jm := &JsonMessage{
        code: codeProvider
    }

现在,当我使用以下代码执行测试时,出现以下错误:
 log.Info("jm.code: ", string(jm.code))

无法将jm.code(类型为CodeProvider)转换为字符串类型

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

最佳答案

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

例:

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

如果您要做的只是在jm.code代码提供者中调用code函数以获取代码字符串,请使用jm.code.code()。

关于go - Golang toString用于接口(interface)和结构实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56223932/

10-11 07:26