1 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊
是的,DDSTexture完全實(shí)現(xiàn)resource.Texture.
但是命名類型NewDDSTexture (type func(string) *DDSTexture)與未命名類型不同func (string) *resource.Texture:它們的類型標(biāo)識不匹配:
如果兩個(gè)函數(shù)類型相同,則它們具有相同數(shù)量的參數(shù)和結(jié)果值,對應(yīng)的參數(shù)和結(jié)果類型相同,并且兩個(gè)函數(shù)都是可變參數(shù)或兩者都不是。參數(shù)和結(jié)果名稱不需要匹配。
命名類型和未命名類型總是不同的。
即使您為函數(shù)定義了命名類型,它也不起作用:
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`
在這里,結(jié)果值類型不匹配DDSTexturevs. resource.Texture:
即使一個(gè)實(shí)現(xiàn)了另一個(gè)的接口,它們的基礎(chǔ)類型仍然不同):您不能將一個(gè)分配給另一個(gè)。
您需要NewDDSTexture()返回Texture(沒有指針,因?yàn)樗且粋€(gè)接口)。
func NewDDSTexture(filename string) Texture
請參閱此示例。
正如我在“將結(jié)構(gòu)指針轉(zhuǎn)換為 golang 中的接口指針”中所解釋的那樣,您通常不需要指向接口的指針。
- 1 回答
- 0 關(guān)注
- 244 瀏覽
添加回答
舉報(bào)