Merge branch 'master' of github.com:Unknwon/the-way-to-go_ZH_CN

This commit is contained in:
Unknown
2014-04-11 23:39:10 -04:00
3 changed files with 8 additions and 8 deletions

View File

@@ -1,6 +1,6 @@
# 3.8 Go 性能说明 # 3.8 Go 性能说明
根据 Go 开发团队和基本的算法测试Go 的性能大概在 C 语言的 10%~20% 之间( **译者注:由于出版时间限制,该数据应为 2013 年 3 月 28 日之前产生** )。虽然没有官方的性能标准,但是与其它各个语言相比已经拥有非常出色的表现。 根据 Go 开发团队和基本的算法测试Go 语言与 C 语言的性能差距大概在 10%~20% 之间( **译者注:由于出版时间限制,该数据应为 2013 年 3 月 28 日之前产生** )。虽然没有官方的性能标准,但是与其它各个语言相比已经拥有非常出色的表现。
如果说 Go 语言的执行效率大约比 C++ 慢 20% 也许更有实际意义。保守估计在相同的环境和执行目标的情况下Go 程序比 Java 或 Scala 应用程序要快上 2 倍,并比这两门语言使用少占用 70% 的内存。在很多情况下这种比较是没有意义的,因为像谷歌这样拥有成千上万台服务器的公司都抛弃 C++ 而开始将 Go 用于生产环境已经足够说明它本身所具有的优势。 如果说 Go 语言的执行效率大约比 C++ 慢 20% 也许更有实际意义。保守估计在相同的环境和执行目标的情况下Go 程序比 Java 或 Scala 应用程序要快上 2 倍,并比这两门语言使用少占用 70% 的内存。在很多情况下这种比较是没有意义的,因为像谷歌这样拥有成千上万台服务器的公司都抛弃 C++ 而开始将 Go 用于生产环境已经足够说明它本身所具有的优势。

View File

@@ -11,7 +11,7 @@ Go 语言的取地址符是 `&`,放到一个变量前使用就会返回相应
下面的代码片段Example 4.9 [pointer.go](examples/chapter_4/pointer.go))可能输出 `An integer: 5, its location in memory: 0x6b0820`(这个值随着你每次运行程序而变化)。 下面的代码片段Example 4.9 [pointer.go](examples/chapter_4/pointer.go))可能输出 `An integer: 5, its location in memory: 0x6b0820`(这个值随着你每次运行程序而变化)。
var i1 = 5 var i1 = 5
fmt.Printf(An integer: %d, its location in memory: %p\n, i1, &i1) fmt.Printf("An integer: %d, it's location in memory: %p\n", i1, &i1)
这个地址可以存储在一个叫做指针的特殊数据类型中,在本例中这是一个指向 int 的指针,即 `i1`:此处使用 *int 表示。如果我们想调用指针 intP我们可以这样声明它 这个地址可以存储在一个叫做指针的特殊数据类型中,在本例中这是一个指向 int 的指针,即 `i1`:此处使用 *int 表示。如果我们想调用指针 intP我们可以这样声明它

View File

@@ -28,7 +28,7 @@ else-if 分支的数量是没有限制的,但是为了代码的可读性,还
即使当代码块之间只有一条语句时,大括号也不可被省略(尽管有些人并不赞成,但这还是符合了软件工程原则的主流做法)。 即使当代码块之间只有一条语句时,大括号也不可被省略(尽管有些人并不赞成,但这还是符合了软件工程原则的主流做法)。
关键字 if 和 else 之后的左大括号 `{` 必须和关键字在同一行,如果你使用了 else-if 结构,则前段代码块的右大括号必须和 else-if 关键字在同一行。这两条规则都是被编译器强制规定的。 关键字 if 和 else 之后的左大括号 `{` 必须和关键字在同一行,如果你使用了 else-if 结构,则前段代码块的右大括号 `}` 必须和 else-if 关键字在同一行。这两条规则都是被编译器强制规定的。
非法的Go代码: 非法的Go代码:
@@ -46,13 +46,13 @@ else-if 分支的数量是没有限制的,但是为了代码的可读性,还
Example 5.1 [booleans.go](examples/chapter_5/booleans.go) Example 5.1 [booleans.go](examples/chapter_5/booleans.go)
package main package main
import fmt import "fmt"
func main() { func main() {
bool1 := true bool1 := true
if bool1 { if bool1 {
fmt.Printf(The value is true\n) fmt.Printf("The value is true\n")
} else { } else {
fmt.Printf(The value is false\n) fmt.Printf("The value is false\n")
} }
} }