我有以下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的字符串表示形式?
答案 0 :(得分:0)
您当前正在尝试将jm.code(这是CodeProvider的结构类型)转换为不是显而易见的转换的字符串。如果您试图获取CodeProvider结构的字符串表示形式,则可以在fmt.Sprintf()中使用“%+ v”标志。
示例:
log.Info("jm.code: ", fmt.Sprintf("%+v", jm.code))
如果您要做的只是在jm.code代码提供者中调用code函数以获取代码字符串,请使用jm.code.code()。