Merge pull request #474 from lidashuang/patch-1

Update go-cn.html.markdown
This commit is contained in:
Nami-Doc 2014-01-04 12:34:35 -08:00
commit dbfcb20ba1

View File

@ -5,6 +5,8 @@ filename: learngo-cn.go
contributors: contributors:
- ["Sonia Keys", "https://github.com/soniakeys"] - ["Sonia Keys", "https://github.com/soniakeys"]
- ["pantaovay", "https://github.com/pantaovay"] - ["pantaovay", "https://github.com/pantaovay"]
- ["lidashuang", "https://github.com/lidashuang"]
--- ---
发明Go语言是出于更好地完成工作的需要。Go不是计算机科学的最新发展潮流但它却提供了解决现实问题的最新最快的方法。 发明Go语言是出于更好地完成工作的需要。Go不是计算机科学的最新发展潮流但它却提供了解决现实问题的最新最快的方法。
@ -30,7 +32,7 @@ import (
) )
// 函数声明Main是程序执行的入口。 // 函数声明Main是程序执行的入口。
// 不管你喜欢还是不喜欢反正G就用了花括号来包住函数体。 // 不管你喜欢还是不喜欢反正Go就用了花括号来包住函数体。
func main() { func main() {
// 往标准输出打印一行。 // 往标准输出打印一行。
// 用包名fmt限制打印函数。 // 用包名fmt限制打印函数。
@ -47,7 +49,7 @@ func beyondHello() {
x = 3 // 变量赋值。 x = 3 // 变量赋值。
// 可以用:=来偷懒,它自动把变量类型、声明和赋值都搞定了。 // 可以用:=来偷懒,它自动把变量类型、声明和赋值都搞定了。
y := 4 y := 4
sum, prod := learnMultiple(x, y) // 多个返回变量的函数 sum, prod := learnMultiple(x, y) // 返回多个变量的函数
fmt.Println("sum:", sum, "prod:", prod) // 简单输出 fmt.Println("sum:", sum, "prod:", prod) // 简单输出
learnTypes() // 少于y分钟学的更多 learnTypes() // 少于y分钟学的更多
} }
@ -82,7 +84,7 @@ can include line breaks.` // 同样是String类型
var a4 [4] int // 有4个int变量的数组初始为0 var a4 [4] int // 有4个int变量的数组初始为0
a3 := [...]int{3, 1, 5} // 有3个int变量的数组同时进行了初始化 a3 := [...]int{3, 1, 5} // 有3个int变量的数组同时进行了初始化
// Slice 有动态大小。Array和Slice各有千秋但是使用slice的地方更多些。 // Slice 可以动态的增删。Array和Slice各有千秋但是使用slice的地方更多些。
s3 := []int{4, 5, 9} // 和a3相比这里没有省略号 s3 := []int{4, 5, 9} // 和a3相比这里没有省略号
s4 := make([]int, 4) // 分配一个有4个int型变量的slice全部被初始化为0 s4 := make([]int, 4) // 分配一个有4个int型变量的slice全部被初始化为0
@ -114,7 +116,7 @@ func learnMemory() (p, q *int) {
s := make([]int, 20) // 给20个int变量分配一块内存 s := make([]int, 20) // 给20个int变量分配一块内存
s[3] = 7 // 赋值 s[3] = 7 // 赋值
r := -2 // 声明另一个局部变量 r := -2 // 声明另一个局部变量
return &s[3], &r // & 取址 return &s[3], &r // &
} }
func expensiveComputation() int { func expensiveComputation() int {
@ -149,7 +151,7 @@ func learnFlowControl() {
// x在这里还是1。为什么 // x在这里还是1。为什么
// for 是go里唯一的循环关键字不过它有很多变种 // for 是go里唯一的循环关键字不过它有很多变种
for { // 无限循环 for { // 循环
break // 骗你的 break // 骗你的
continue // 不会运行的 continue // 不会运行的
} }
@ -239,7 +241,7 @@ func learnConcurrency() {
go inc(-805, c) go inc(-805, c)
// 从channel中独处结果并打印。 // 从channel中独处结果并打印。
// 打印出什么东西是不可预知的。 // 打印出什么东西是不可预知的。
fmt.Println(<-c, <-c, <-c) // channel在右边的时候<-是接收操作 fmt.Println(<-c, <-c, <-c) // channel在右边的时候<-是操作
cs := make(chan string) // 操作string的channel cs := make(chan string) // 操作string的channel
cc := make(chan chan string) // 操作channel的channel cc := make(chan chan string) // 操作channel的channel
@ -255,7 +257,7 @@ func learnConcurrency() {
case <-cc: // 空的还没作好通讯的准备 case <-cc: // 空的还没作好通讯的准备
fmt.Println("didn't happen.") fmt.Println("didn't happen.")
} }
// 上面c或者cs的值被取到其中一个goroutine结束另外一个保持阻塞。 // 上面c或者cs的值被取到其中一个goroutine结束另外一个一直阻塞。
learnWebProgramming() // Go很适合web编程我知道你也想学 learnWebProgramming() // Go很适合web编程我知道你也想学
} }