Skip to content

Commit 4a5eff8

Browse files
committed
Merge pull request astaxie#434 from xinwendashibaike/master
修改表达不是很通顺的语句
2 parents 07d844c + 11370b6 commit 4a5eff8

File tree

4 files changed

+10
-8
lines changed

4 files changed

+10
-8
lines changed

zh/02.1.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444

4545
## 结论
4646

47-
Go使用`package`(和Python的模块类似)来组织代码。`main.main()`函数(这个函数主要位于主包)是每一个独立的可运行程序的入口点。Go使用UTF-8字符串和标识符(因为UTF-8的发明者也就是Go的发明者),所以它天生就具有多语言的支持
47+
Go使用`package`(和Python的模块类似)来组织代码。`main.main()`函数(这个函数位于主包)是每一个独立的可运行程序的入口点。Go使用UTF-8字符串和标识符(因为UTF-8的发明者也就是Go的发明者),所以它天生支持多语言
4848

4949
## links
5050
* [目录](<preface.md>)

zh/02.2.md

+5-5
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Go语言里面定义变量有多种方式。
1313

1414
定义多个变量
1515

16-
//定义三个类型都是“type”的三个变量
16+
//定义三个类型都是“type”的变量
1717
var vname1, vname2, vname3 type
1818

1919
定义变量并初始化值
@@ -24,15 +24,15 @@ Go语言里面定义变量有多种方式。
2424
同时初始化多个变量
2525

2626
/*
27-
定义三个类型都是"type"的三个变量,并且它们分别初始化相应的值
27+
定义三个类型都是"type"的变量,并且分别初始化为相应的值
2828
vname1为v1,vname2为v2,vname3为v3
2929
*/
3030
var vname1, vname2, vname3 type= v1, v2, v3
3131

3232
你是不是觉得上面这样的定义有点繁琐?没关系,因为Go语言的设计者也发现了,有一种写法可以让它变得简单一点。我们可以直接忽略类型声明,那么上面的代码变成这样了:
3333

3434
/*
35-
定义三个变量,它们分别初始化相应的值
35+
定义三个变量,它们分别初始化为相应的值
3636
vname1为v1,vname2为v2,vname3为v3
3737
然后Go会根据其相应值的类型来帮你初始化它们
3838
*/
@@ -41,7 +41,7 @@ Go语言里面定义变量有多种方式。
4141
你觉得上面的还是有些繁琐?好吧,我也觉得。让我们继续简化:
4242

4343
/*
44-
定义三个变量,它们分别初始化相应的值
44+
定义三个变量,它们分别初始化为相应的值
4545
vname1为v1,vname2为v2,vname3为v3
4646
编译器会根据初始化的值自动推导出相应的类型
4747
*/
@@ -63,7 +63,7 @@ Go对于已声明但未使用的变量会在编译阶段报错,比如下面的
6363

6464
## 常量
6565

66-
所谓常量,也就是在程序编译阶段就确定下来的值,而程序在运行时则无法改变该值。在Go程序中,常量可定义为数值、布尔值或字符串等类型。
66+
所谓常量,也就是在程序编译阶段就确定下来的值,而程序在运行时无法改变该值。在Go程序中,常量可定义为数值、布尔值或字符串等类型。
6767

6868
它的语法如下:
6969

zh/02.7.md

+2
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,8 @@ channel通过操作符`<-`来接收和发送数据
110110
fmt.Println(<-c)
111111
fmt.Println(<-c)
112112
}
113+
//修改为1报如下的错误:
114+
//fatal error: all goroutines are asleep - deadlock!
113115

114116
## Range和Close
115117
上面这个例子中,我们需要读取两次c,这样不是很方便,Go考虑到了这一点,所以也可以通过range,像操作slice或者map一样操作缓存类型的channel,请看下面的例子

zh/05.1.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# 5.1 database/sql接口
2-
Go与PHP不同的地方是Go没有官方提供数据库驱动,而是为开发者开发数据库驱动定义了一些标准接口,开发者可以根据定义的接口来开发相应的数据库驱动,这样做有一个好处,只要按照标准接口开发的代码, 以后需要迁移数据库时,不需要任何修改。那么Go都定义了哪些标准接口呢?让我们来详细的分析一下
2+
Go与PHP不同的地方是Go官方没有提供数据库驱动,而是为开发数据库驱动定义了一些标准接口,开发者可以根据定义的接口来开发相应的数据库驱动,这样做有一个好处,只要是按照标准接口开发的代码, 以后需要迁移数据库时,不需要任何修改。那么Go都定义了哪些标准接口呢?让我们来详细的分析一下
33

44
## sql.Register
55
这个存在于database/sql的函数是用来注册数据库驱动的,当第三方开发者开发数据库驱动时,都会实现init函数,在init里面会调用这个`Register(name string, driver driver.Driver)`完成本驱动的注册。
@@ -36,7 +36,7 @@ Go与PHP不同的地方是Go没有官方提供数据库驱动,而是为开发
3636
3737
>新手都会被这个`_`所迷惑,其实这个就是Go设计的巧妙之处,我们在变量赋值的时候经常看到这个符号,它是用来忽略变量赋值的占位符,那么包引入用到这个符号也是相似的作用,这儿使用`_`的意思是引入后面的包名而不直接使用这个包中定义的函数,变量等资源。
3838
39-
>我们在2.3节流程和函数的一节中介绍过init函数的初始化过程,包在引入的时候会自动调用包的init函数以完成对包的初始化。因此,我们引入上面的数据库驱动包之后会自动去调用init函数,然后在init函数里面注册这个数据库驱动,这样我们就可以在接下来的代码中直接使用这个数据库驱动了。
39+
>我们在2.3节流程和函数一节中介绍过init函数的初始化过程,包在引入的时候会自动调用包的init函数以完成对包的初始化。因此,我们引入上面的数据库驱动包之后会自动去调用init函数,然后在init函数里面注册这个数据库驱动,这样我们就可以在接下来的代码中直接使用这个数据库驱动了。
4040
4141
## driver.Driver
4242
Driver是一个数据库驱动的接口,他定义了一个method: Open(name string),这个方法返回一个数据库的Conn接口。

0 commit comments

Comments
 (0)