|
@@ -48,7 +48,7 @@ Go 语言还能够在运行时进行反射相关的操作。
|
|
|
|
|
|
|
|
使用 `go install` 能够很轻松地对第三方包进行部署。
|
|
使用 `go install` 能够很轻松地对第三方包进行部署。
|
|
|
|
|
|
|
|
-此外,Go 语言还支持调用由 C 语言编写的海量库文件(第 3.9 节),从而能够将过去开发的软件进行快速迁移。
|
|
|
|
|
|
|
+此外,Go 语言还支持调用由 C 语言编写的海量库文件([第 3.9 节](03.9.md)),从而能够将过去开发的软件进行快速迁移。
|
|
|
|
|
|
|
|
## 1.2.4 指导设计原则
|
|
## 1.2.4 指导设计原则
|
|
|
|
|
|
|
@@ -62,7 +62,7 @@ Go 语言有一种极简抽象艺术家的感觉,因为它只提供了一到
|
|
|
|
|
|
|
|
Go 语言有一套完整的编码规范,你可以在 [Go 语言编码规范](http://golang.org/doc/go_spec.html) 页面进行查看。
|
|
Go 语言有一套完整的编码规范,你可以在 [Go 语言编码规范](http://golang.org/doc/go_spec.html) 页面进行查看。
|
|
|
|
|
|
|
|
-它不像 Ruby 那样通过实现过程来定义编码规范。作为一门具有明确编码规范的语言,它要求可以采用不同的编译器如 gc 和 gccgo(第 2.1 节)进行编译工作,这对语言本身拥有更好的编码规范起到很大帮助。
|
|
|
|
|
|
|
+它不像 Ruby 那样通过实现过程来定义编码规范。作为一门具有明确编码规范的语言,它要求可以采用不同的编译器如 gc 和 gccgo([第 2.1 节](02.1.md))进行编译工作,这对语言本身拥有更好的编码规范起到很大帮助。
|
|
|
|
|
|
|
|
[LALR](http://en.wikipedia.org/wiki/LALR_parser) 是 Go 语言的语法标准,你也可以在 [`src/cmd/internal/gc/go.y`](https://github.com/golang/go/blob/master/src%2Fcmd%2Finternal%2Fgc%2Fgo.y) 中查看到,这种语法标准在编译时不需要符号表来协助解析。
|
|
[LALR](http://en.wikipedia.org/wiki/LALR_parser) 是 Go 语言的语法标准,你也可以在 [`src/cmd/internal/gc/go.y`](https://github.com/golang/go/blob/master/src%2Fcmd%2Finternal%2Fgc%2Fgo.y) 中查看到,这种语法标准在编译时不需要符号表来协助解析。
|
|
|
|
|
|
|
@@ -70,11 +70,12 @@ Go 语言有一套完整的编码规范,你可以在 [Go 语言编码规范](h
|
|
|
|
|
|
|
|
Go 语言从本质上(程序和结构方面)来实现并发编程。
|
|
Go 语言从本质上(程序和结构方面)来实现并发编程。
|
|
|
|
|
|
|
|
-因为 Go 语言没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同。但是它通过接口(interface)的概念来实现多态性。Go 语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之说。因此可以说这是一门混合型的语言。
|
|
|
|
|
|
|
+因为 Go 语言没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同。但是它通过接口 (interface) 的概念来实现多态性。Go 语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之说。因此可以说这是一门混合型的语言。
|
|
|
|
|
|
|
|
在传统的面向对象语言中,使用面向对象编程技术显得非常臃肿,它们总是通过复杂的模式来构建庞大的类型层级,这违背了编程语言应该提升生产力的宗旨。
|
|
在传统的面向对象语言中,使用面向对象编程技术显得非常臃肿,它们总是通过复杂的模式来构建庞大的类型层级,这违背了编程语言应该提升生产力的宗旨。
|
|
|
|
|
|
|
|
-函数是 Go 语言中的基本构件,它们的使用方法非常灵活。在第六章,我们会看到 Go 语言在函数式编程方面的基本概念。
|
|
|
|
|
|
|
+函数是 Go 语言中的基本构件,它们的使用方法非常灵活。在[第六章](06.0.md),我们会看到 Go 语言在函数式编程方面的基本概念。
|
|
|
|
|
+
|
|
|
|
|
|
|
|
Go 语言使用静态类型,所以它是类型安全的一门语言,加上通过构建到本地代码,程序的执行速度也非常快。
|
|
Go 语言使用静态类型,所以它是类型安全的一门语言,加上通过构建到本地代码,程序的执行速度也非常快。
|
|
|
|
|
|
|
@@ -96,9 +97,10 @@ Go 语言一个非常好的目标就是实现所谓的复杂事件处理([CEP]
|
|
|
|
|
|
|
|
越来越多的谷歌内部的大型分布式应用程序都开始使用 Go 语言来开发,例如谷歌地球的一部分代码就是由 Go 语言完成的。
|
|
越来越多的谷歌内部的大型分布式应用程序都开始使用 Go 语言来开发,例如谷歌地球的一部分代码就是由 Go 语言完成的。
|
|
|
|
|
|
|
|
-如果你想知道一些其它组织使用Go语言开发的实际应用项目,你可以到 [使用 Go 的组织](http://go-lang.cat-v.org/organizations-using-go) 页面进行查看。出于隐私保护的考虑,许多公司的项目都没有展示在这个页面。我们将会在第 21 章讨论到一个使用 Go 语言开发的大型存储区域网络(SAN)案例。
|
|
|
|
|
|
|
+如果你想知道一些其它组织使用Go语言开发的实际应用项目,你可以到 [使用 Go 的组织](http://go-lang.cat-v.org/organizations-using-go) 页面进行查看。出于隐私保护的考虑,许多公司的项目都没有展示在这个页面。我们将会在[第 21 章](21.0.md) 讨论到一个使用 Go 语言开发的大型存储区域网络 (SAN) 案例。
|
|
|
|
|
+
|
|
|
|
|
|
|
|
-在 Chrome 浏览器中内置了一款 Go 语言的编译器用于本地客户端(NaCl),这很可能会被用于在 Chrome OS 中执行 Go 语言开发的应用程序。
|
|
|
|
|
|
|
+在 Chrome 浏览器中内置了一款 Go 语言的编译器用于本地客户端 (NaCl),这很可能会被用于在 Chrome OS 中执行 Go 语言开发的应用程序。
|
|
|
|
|
|
|
|
Go 语言可以在 Intel 或 ARM 处理器上运行,因此它也可以在安卓系统下运行,例如 Nexus 系列的产品。
|
|
Go 语言可以在 Intel 或 ARM 处理器上运行,因此它也可以在安卓系统下运行,例如 Nexus 系列的产品。
|
|
|
|
|
|
|
@@ -110,12 +112,12 @@ Go 语言可以在 Intel 或 ARM 处理器上运行,因此它也可以在安
|
|
|
|
|
|
|
|
- 为了简化设计,不支持函数重载和操作符重载
|
|
- 为了简化设计,不支持函数重载和操作符重载
|
|
|
- 为了避免在 C/C++ 开发中的一些 Bug 和混乱,不支持隐式转换
|
|
- 为了避免在 C/C++ 开发中的一些 Bug 和混乱,不支持隐式转换
|
|
|
-- Go 语言通过另一种途径实现面向对象设计(第 10-11 章)来放弃类和类型的继承
|
|
|
|
|
-- 尽管在接口的使用方面(第 11 章)可以实现类似变体类型的功能,但本身不支持变体类型
|
|
|
|
|
|
|
+- Go 语言通过另一种途径实现面向对象设计(第 [10](10.0.md)-[11](11.0.md) 章)来放弃类和类型的继承
|
|
|
|
|
+- 尽管在接口的使用方面([第 11 章](11.0.md))可以实现类似变体类型的功能,但本身不支持变体类型
|
|
|
- 不支持动态加载代码
|
|
- 不支持动态加载代码
|
|
|
- 不支持动态链接库
|
|
- 不支持动态链接库
|
|
|
- 不支持泛型
|
|
- 不支持泛型
|
|
|
-- 通过 `recover` 和 `panic` 来替代异常机制(第 13.2-3 节)
|
|
|
|
|
|
|
+- 通过 `recover()` 和 `panic()` 来替代异常机制(第 [13.2](13.2.md)-[13.3](13.3.md) 节)
|
|
|
- 不支持静态变量
|
|
- 不支持静态变量
|
|
|
|
|
|
|
|
关于 Go 语言开发团队对于这些方面的讨论,你可以通过 [Go 常见问题](http://golang.org/doc/go_faq.html) 页面查看。
|
|
关于 Go 语言开发团队对于这些方面的讨论,你可以通过 [Go 常见问题](http://golang.org/doc/go_faq.html) 页面查看。
|