1 回答
TA贡献1842条经验 获得超12个赞
作家File的FileLogger是一个接口(io.Writer),而不是一个struct。
您将需要一个类型声明,以访问data的WriterMock:
fileLooger.File.(*WriterMock).data
(注意:如果 File 不是 a ,那将会失败*WriterMock:更多关于下面的内容)
请参阅此简化示例:
包主
import "fmt"
import "io"
type WriterMock struct {
data []byte
}
func (this WriterMock) Write(b []byte) (n int, err error) {
this.data = append(this.data, b...)
return len(this.data), nil
}
func main() {
var w io.Writer = &WriterMock{}
fmt.Printf("Hello, playground '%+v'", w.(*WriterMock).data)
}
输出:
Hello, playground '[]'
----
由于类型断言汽车错误,您应该始终检查错误,请考虑“接口转换和类型断言”部分:
但如果结果证明该值不包含字符串,则程序将因运行时错误而崩溃。
为了防止出现这种情况,请使用“逗号,好的”习语来安全地测试该值是否为字符串:
str, ok := value.(string)
if ok {
fmt.Printf("string value is: %q\n", str)
} else {
fmt.Printf("value is not a string\n")
}
- 1 回答
- 0 关注
- 231 浏览
添加回答
举报