1 回答
TA贡献1851条经验 获得超5个赞
是的,DDSTexture完全实现resource.Texture.
但是命名类型NewDDSTexture (type func(string) *DDSTexture)与未命名类型不同func (string) *resource.Texture:它们的类型标识不匹配:
如果两个函数类型相同,则它们具有相同数量的参数和结果值,对应的参数和结果类型相同,并且两个函数都是可变参数或两者都不是。参数和结果名称不需要匹配。
命名类型和未命名类型总是不同的。
即使您为函数定义了命名类型,它也不起作用:
type FuncTexture func(string) *Texture
func AddTextureLoader(ext string, fn FuncTexture)
cannot use NewDDSTexture (type func(string) `*DDSTexture`)
as type `FuncTexture` in argument to `AddTextureLoader`
在这里,结果值类型不匹配DDSTexturevs. resource.Texture:
即使一个实现了另一个的接口,它们的基础类型仍然不同):您不能将一个分配给另一个。
您需要NewDDSTexture()返回Texture(没有指针,因为它是一个接口)。
func NewDDSTexture(filename string) Texture
请参阅此示例。
正如我在“将结构指针转换为 golang 中的接口指针”中所解释的那样,您通常不需要指向接口的指针。
- 1 回答
- 0 关注
- 220 浏览
添加回答
举报