泛型的疑问
来源:19-1 体会Go语言的设计

鱼右
2020-02-11
老师,你好
我看了老师的java课程,那里说到了泛型,我看了一下用Go中的空接口,或者反射都可以实现对应的功能,为什么还要用泛型呢?除了用空接口,反射性能不好的这个原因外,还能有其他的现在Go语言不好实现的嘛, 关于泛型,谢谢老师
写回答
1回答
-
泛型可以约束参数的类型。
比如Java里面,我们一个List<String> lst,我们就只能给它加String,如果写lst.add(3),就会编译错误。而这个List,我们实现一次,就可以支持List<String>, List<Integer>,等等各种类型的List。
在Go里面我们如果要自己实现List,没有泛型的情况下只能把容器里面的元素定义为interface{},Add函数定义为Add(v interface{})。我们没法在编译时约束参数类型,只能在运行时检查。
不过Go语言的内建容器类型比如slice, map本身内部实现了泛型。比如[]int我们不能去append一个string。
012020-09-11
相似问题