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