错误消息:
cannot use &f (type *Bar) as type StringerGetter in argument to Printer: *Bar does not implement StringerGetter (wrong type for GetStringer method) have GetStringer() *Foo want GetStringer() fmt.Stringer
在 Go 中,接口方法依赖于精确的类型匹配。这意味着返回接口的函数在接口及其实现中必须具有相同的确切类型。如果它们不匹配,Go 将生成编译时错误。
在这种情况下,您的接口 StringerGetter 指定了一个返回 fmt.Stringer 的方法 GetStringer()。但是,具体类型 Bar 的 GetStringer() 实现返回一个指向 Foo 结构的指针,该结构不是 fmt.Stringer。这种不匹配会导致编译时错误。
解决方案:
准确实现接口:
将具体类型包装在新类型中:
使用断言:
重要注意事项:
以上是以下是一些标题选项,涉及错误的'为什么”和'如何”: 强调'为什么” * 为什么我的 Go 代码抛出'cannot use...as type St”的详细内容。更多信息请关注PHP中文网其他相关文章!