Golang toString用于接口和结构实现

时间:2019-05-20 15:23:42

标签: go

我有以下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的字符串表示形式?

1 个答案:

答案 0 :(得分:0)

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

示例:

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

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