" Golang更有效率,因为任何类型都可以给出方法"。这如何提高生产力?

时间:2015-12-02 10:43:59

标签: go

我正在看Google IO 2010 - GO Programming video他们声称的地方(见32:38)

" GO可以使编程非常高效,因为   - 任何类型都可以给出方法,这开辟了有趣的设计可能性"

有人可以解释一下这个功能如何提高生产力?此功能是否不存在于其他语言中?

2 个答案:

答案 0 :(得分:4)

在java或c#中,您需要声明一个类来从某个接口继承/实现。但是在golang中,声明不是必需的,只需编写你想要实现的接口的方法。

它更灵活,因此我想以某种方式提高生产力。

答案 1 :(得分:3)

在实践中,这意味着您可以将方法添加到预定义类型(好吧,不是它们,而是从它们派生的类型)。

例如,如果您有一个Foo列表(其中Foo是您或其他包定义的类型)并且想要使该列表可排序,您只需要使列表实现{ {1}}。为此,您只需定义一个新类型

sort.Interface

并在其上定义方法以实现接口:

type fooSlice []Foo

然后,只要你有一片func (fs fooSlice) Len() int { return len(fs) } func (fs fooSlice) Swap(a, b int) { fs[a], fs[b] = fs[b], fs[a] } func (fs fooSlice) Less(a, b int) bool { return fs[a].Ord() < fs[b].Ord() } ,就可以将它作为Foo投射,然后与fooSlice一起使用:

sort.Sort

用Java来做这件事需要更多的管道,因为你需要一个新的类,让它有一个字段(func sortAndDoStuff(foos []Foo) { sort.Sort(fooSlice(foos)) doStuff(foos) } ),比如它实现一个接口,实现所述方法(与go一样)并制作在[]Foo[]Foo类之间来回传递的方法。