goLang之禅

近日再学golang
略看《A Tour of Go》
仔细看标准库代码
体会Ken等大师所认知的世界,领悟世界的真谛。

凡事都应简单,但不能过于简单 ————Albert Einstein

根据 Robert Hundt(2011 年 6 月,详见引用 28)的文章对 C++、Java、Go 和 Scala,以及 Go 开发团队的反应(详见引用 29),可以得出以下结论:

Go 和 Scala 之间具有更多

  • 的可比性(都使用更少的代码),而 C++ 和 Java 都使用非常冗长的代码。
  • Go 的编译速度要比绝大多数语言都要快,比 Java 和C++ 快 5 至 6 倍,比 Scala 快 10 倍。
  • Go 的二进制文件体积是最大的(每个可执行文件都包含 runtime)。(时间纵看,是以空间换软件复杂度,现代来说 太值了!)
  • 在最理想的情况下,Go 能够和 C++ 一样快,比 Scala 快 2 至 3 倍,比 Java 快 5 至 10 倍。
  • Go在内存管理方面也可以和 C++ 相媲美,几乎只需要 Scala 所使用的一半,是Java的五分之一左右。

内嵌类型的方法和继承

当一个匿名类型被内嵌在结构体中时,匿名类型的可见方法也同样被内嵌,这在效果上等同于外层类型 继承了这些方法:将父类型放在子类型中来实现亚型。这个机制提供了一种简单的方式来模拟经典面向对象语言中的子类和继承相关的效果,也类似 Ruby中的混入(mixin)。

type Engine interface {
    Start()
    Stop()
}

type Car struct {
    Engine
}

Go的这种设计,能更自然地表示世界,没有多继承的复杂、没有单继承的局限、不需要像PHP那样 单继承+trait补充
万物关系从来不只是继承,还有更多的组合。越是准确直接地表达世界,代码越是整洁。

标签: none

仅有一条评论

  1. slickqt slickqt

    go有方便的一面,不过性能比C++,java都快是不太容易达到的,只有核心很多的情况下比较容易出现
    整体来说,都在伯仲之间,但是go写起来方便多了
    性能参考:
    https://github.com/TarsCloud/TarsGo/blob/master/docs/tars_go_performance.md

    https://performance-dot-grpc-testing.appspot.com/explore?dashboard=5652536396611584

添加新评论