[Go分享]Golang中的“泛型”支持
来自: Go Beginner
发布于: 2014-09-18 15:29:11
浏览(4053)
评论(0)
赞(6)
收藏(0)
转载出处:http:///post/162
Golang不支持一般的类似java中的标记式泛型。很多人因此而十分不满,认为没有泛型增加了很多工作量。而目前由于泛型支持的复杂 性,Golang的设计和实现者并没有把这个泛型支持作为紧急需要增加的特性。但是,如果真的没有泛型,就一定不行了么?答案当然是否定的。没有泛型也可 以,而且我觉得代码更简单,直接,有趣(个人观点,勿喷)。 我们这里打算以一些例子来讲解Golang中如何处理这个问题。 首先,我们看一个冒泡排序的问题。针对整型数组切片的排序。
上面的例子输出为: [2 3 4 5 6 6 7 10] 那么,我们如果希望这个bubbleSort能够同时支持float类型数据排序,或者是按照字符串的长度来排序应该怎么做呢?在其他的例如 java语言中,我们可以将bubbleSort定义为支持泛型的排序,但是Go里面就不行了。为了达到这个目的,我们可以使用interface来实现 相同的功能。 针对上面的排序问题,我们可以分析一下排序的步骤:
查看切片长度,以用来遍历元素(Len);
比较切片中的两个元素(Less);
根据比较的结果决定是否交换元素位置(Swap)。
输出结果为: [1 2 3 4 6 10] [i am go lang hello] 上面的例子中,我们首先定义了一个IntArr类型的整型切片类型,然后让这个类型实现了Sortable接口,然后在测试代码中,这个IntArr类型就可以直接调用Sortable接口的bubbleSort方法了。 另外,我们还演示了一个字符串切片类型StringArr按照字符串长度来排序的例子。和IntArr类型一样,它实现了Sortable即可定义的方法,然后就可以用Sortable即可的bubbleSort方法来排序了。
总结
go
golang
go泛型
|
|