下面的代码导致错误"INVALID COMPACTIVE TEXAL TYPE T".
package main
import "fmt"
func main() {
fmt.Println(createThing[foo]())
}
type thing interface {
foo | bar
}
type foo struct {
id int
a string
}
type bar struct {
id int
b int
}
func createThing[T thing, P *T]() P {
return &T{}
}
如果我只在接口thing
中包含foo
,或者删除a string
和b int
以使foo
和bar
完全相同,则代码将运行而不会出错.然而,这不是违背了泛型的目的吗?为什么我不能像这样实例化泛型类型,尤其是在我甚至不访问任何字段的情况下?