先看代码,定义一个简单的泛型 c1
里面一个 int ,定义一个函数goods
下面 main
函数进行调用, 如果直接传int
类型是不会报错的,但是如果传自定义类型的b
就会报错。
bash
type c1 interface {
int
}
func goods[T c1](a T) {
fmt.Println(a)
}
type myint int
func main() {
var a int = 1
var b myint = 2
goods(a)
goods(b) error:myint does not satisfy c1 (possibly missing ~ for int in c1)compilerInvalidTypeArg
}
对面代码改成就不会有问题
bash
type c1 interface {
~int
}
解释
"~" 符号的类型则代表以该类型为底层类型(underlying type)的所有类型,这类带有 "~" 的类型也被称为 approximation elemen