“Golang的效率更高,因为任何类型都可以给出方法”.这如何提高生产力?

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

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

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

解决方法

实际上,这意味着您可以将方法添加到预定义类型(嗯,不是它们,而是从它们派生的类型).

例如,如果你有一个Foo列表(其中Foo是你或其他包定义的类型)并且想要使该列表可排序,你只需要使列表实现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一起使用:

func sortAndDoStuff(foos []Foo) {
    sort.Sort(fooSlice(foos))
    doStuff(foos)
}

用Java来做这件事需要更多的管道,因为你需要一个新的类,让它有一个字段([] Foo),比如它实现一个接口,实现所说的方法(和go一样)和制作在[] Foo和fooSlice类之间来回切换的方法.

相关文章

Golang的文档和社区资源:为什么它可以帮助开发人员快速上手...
Golang:AI 开发者的实用工具
Golang的标准库:为什么它可以大幅度提高开发效率?
Golang的部署和运维:如何将应用程序部署到生产环境中?
高性能AI开发:Golang的优势所在
本篇文章和大家了解一下go语言开发优雅得关闭协程的方法。有...