Skip to content

Commit f1d0ce6

Browse files
committed
Merge pull request astaxie#26 from OlingCat/master
some changes
2 parents e45c6fc + b72a1b3 commit f1d0ce6

File tree

3 files changed

+146
-139
lines changed

3 files changed

+146
-139
lines changed

1.1.md

+45-42
Original file line numberDiff line numberDiff line change
@@ -1,91 +1,94 @@
11
# 1.1 Go 安装
22

3-
##如何判断机器是32还是64位系统
4-
我们接下来的Go安装需要判断操作系统的位数,所以这小节我们先确定我们自己的系统类型。
3+
##如何判断自己的操作系统是32位还是64位?
54

6-
针对window系统,右击我的电脑,点击属性,显示的信息里面我们可以判断出来,XP系统如果是64位的,那么会显示X64,如果没有X64,那么默认都是32位。window7系统也是查看我的电脑的属性,在系统类型里面会显示使用的系统类型,64位操作系统或者32位操作系统
5+
我们接下来的Go安装需要判断操作系统的位数,所以这小节我们先确定自己的系统类型
76

8-
Mac系统的用户建议直接使用64位的,因为Go支持的Mac OS X已经不支持在纯32位处理器上跑了
7+
Windows系统用户请按Win+R运行cmd,输入`systeminfo`后回车,稍等片刻,会出现一堆系统信息。在“系统类型”一行中,若显示“x64-based PC”,即为32位系统;若显示“X86-based PC”,则为32位系统
98

10-
Linux系统通过命令`uname -a`可以查看系统的信息:
9+
Mac系统用户建议直接使用64位的,因为Go所支持的Mac OS X版本已经不支持纯32位处理器了。
1110

12-
64位机器显示
11+
Linux系统用户可通过在Terminal中执行命令`uname -a`来查看系统信息:
1312

14-
前面有一段描述 x86_64 x86_64 x86_64 GNU/Linux
13+
64位系统显示
1514

16-
32位机器显示
15+
<一段描述> x86\_64 x86\_64 x86\_64 GNU/Linux
1716

18-
前面有一段描述 i686 i686 i386 GNU/Linux
17+
32位系统显示
18+
19+
<一段描述> i686 i686 i386 GNU/Linux
20+
21+
## Windows 安装
22+
23+
访问[下载地址][downlink],32位系统下载go1.0.2.windows-386.msi,64位系统下载go1.0.2.windows-amd64.msi。双击打开下载的文件,一路按照默认点击下一步,这个时候go已经安装到你的系统中,默认安装之后已经在你的系统环境变量中加入了`c:/go/bin`,这个时候打开cmd,输入`go`
1924

20-
## Window 安装
21-
22-
访问[下载地址][downlink],32位机器下载go1.0.2.windows-386.msi,64位机器下载go1.0.2.windows-amd64.msi,双击下载文件,一路按照默认点击下一步,这个时候go已经安装到你的系统中,默认安装之后已经在你的系统环境变量中加入了`c:/go/bin`,这个时候打开CMD,输入`go`
23-
2425
看到如下图片说明已经安装成功
2526

2627
![](images/1.1.cmd.png?raw=true)
27-
28-
出现go编译的信息,那么说明go已经安装成功了如果出现该命令不存在,那么可以检查一下自己的环境变量里面的PATH是不是包含了go安装目录
28+
29+
如果出现go的Usage信息,那么说明go已经安装成功了如果出现该命令不存在,那么可以检查一下自己的PATH环境变中是否包含了go的安装目录。
2930

3031
## Mac 安装
3132

32-
访问[下载地址][downlink]32位机器下载go1.0.2.darwin-386.pkg,64位机器下载go1.0.2.darwin-amd64.pkg,双击下载文件,一路默认安装点击下一步,这个时候go已经安装到你的系统中,默认已经在PATH中增加了相应的`~/go/bin`,这个时候打开终端,输入`go`
33+
访问[下载地址][downlink]32位系统下载go1.0.2.darwin-386.pkg,64位系统下载go1.0.2.darwin-amd64.pkg,双击下载文件,一路默认安装点击下一步,这个时候go已经安装到你的系统中,默认已经在PATH中增加了相应的`~/go/bin`,这个时候打开终端,输入`go`
3334

3435
看到如下图片说明已经安装成功
3536

3637
![](images/1.1.mac.png?raw=true)
3738

38-
出现go编译的信息,那么说明go已经安装成功了,如果出现该命令不存在,那么可以检查一下自己的环境变量里面的PATH是不是包含了go安装目录
39+
如果出现go的Usage信息,那么说明go已经安装成功了;如果出现该命令不存在,那么可以检查一下自己的PATH环境变中是否包含了go的安装目录。
40+
41+
## Linux 安装
42+
访问[下载地址][downlink],32位系统下载go1.0.2.linux-386.tar.gz,64位系统下载go1.0.2.linux-amd64.tar.gz,
3943

40-
## linux安装
41-
访问[下载地址][downlink],32位机器下载go1.0.2.linux-386.tar.gz,64位机器下载go1.0.2.linux-amd64.tar.gz,
42-
4344
解压缩`tar zxvf go1.0.2.linux-amd64.tar.gz`
44-
45-
解压文件到go,移动go文件到home目录下`mv go ~/`
46-
45+
46+
移动go文件夹到home目录下`mv go ~/`
47+
4748
设置PATH,`export PATH=$PATH:$HOME/go/bin`
48-
49+
4950
然后执行`go`
50-
51+
5152
看到如下图片说明已经安装成功
5253

5354
![](images/1.1.linux.png?raw=true)
5455

55-
出现go编译的信息,那么说明go已经安装成功了如果出现该命令不存在,那么可以检查一下自己的环境变量里面的PATH是不是包含了go安装目录
56+
如果出现go的Usage信息,那么说明go已经安装成功了如果出现该命令不存在,那么可以检查一下自己的PATH环境变中是否包含了go的安装目录。
5657

5758

5859
## 源码安装
59-
Go的源代码有部分是用C写的,所以你要源码安装,必须第一步安装C的编译工具
60-
61-
Mac系统只要你安装了Xcode,就已经包含了相应的编译工具。在Unix系统中需要安装gcc等工具,例如Ubuntu系统通过这种方式安装编译工具:`sudo apt-get install gcc libc6-dev`。在Window系统中你需要安装MinGW,通过MinGW安装gcc。
62-
63-
首先你必须安装了hg工具,然后执行如下的代码
64-
65-
假设当前在当前用户的home目录下
66-
67-
hg clone -u release https://code.google.com/p/go
68-
cd go/src
69-
./all.bash
60+
在Go的源代码中,有些部分是用C和汇编写的,因此你要想从源码安装,就必须安装C的编译工具。
61+
62+
在Mac系统中,只要你安装了Xcode,就已经包含了相应的编译工具。
63+
在类Unix系统中,需要安装gcc等工具,例如Ubuntu系统可通过这种方式安装编译工具:`sudo apt-get install gcc libc6-dev`
64+
在Windows系统中,你需要安装MinGW,然后通过MinGW安装gcc。
65+
66+
首先你必须安装了hg工具,然后执行如下代码:
67+
68+
假设目前在当前用户的`home`目录下
69+
70+
hg clone -u release https://code.google.com/p/go
71+
cd go/src
72+
./all.bash
7073

7174
运行all.bash后出现"ALL TESTS PASSED"的字样的时候才算安装成功;
7275

7376
上面写的是Unix风格的,Windows下安装方式类似,只不过是运行all.bat,调用的编译器是MinGW的 gcc。
74-
77+
7578
然后设置PATH,`export PATH=$PATH:$HOME/go/bin`
76-
79+
7780
看到如下图片说明已经安装成功
7881

7982
![](images/1.1.mac.png?raw=true)
8083

81-
出现go编译的信息,那么说明go已经安装成功了如果出现该命令不存在,那么可以检查一下自己的环境变量里面的PATH是不是包含了go安装目录
84+
如果出现go的Usage信息,那么说明go已经安装成功了如果出现该命令不存在,那么可以检查一下自己的PATH环境变中是否包含了go的安装目录。
8285

8386
## links
8487
* [目录](<preface.md>)
8588
* 上一节: [Go环境配置](<1.md>)
8689
* 下一节: [GOPATH 与工作空间](<1.2.md>)
8790

88-
## LastModified
91+
## LastModified
8992
* $Id$
9093

91-
[downlink]: http://code.google.com/p/go/downloads/list "GO安装下载"
94+
[downlink]: http://code.google.com/p/go/downloads/list "Go安装包下载"

1.2.md

+81-79
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
# 1.2 GOPATH与工作空间
22

33
## GOPATH设置
4-
go 命令依赖一个重要的环境变量:$GOPATH
4+
go 命令依赖一个重要的环境变量:$GOPATH<sup>1</sup>
55

66
在类似 Unix 环境大概这样设置:
77

8-
export GOPATH=/home/apple/mygo
8+
export GOPATH=/home/apple/mygo
99

1010
Windows 设置如下,新建一个环境变量名称叫做GOPATH:
11-
12-
GOPATH=c:\mygo
1311

14-
GOPATH允许多个目录,当有多个目录时,请注意分隔符,多个gopath的时候windows是分号,linux系统是冒号,当有多个gopath时,默认会将go get的内容放在第一个目录下
12+
GOPATH=c:\mygo
13+
14+
GOPATH允许多个目录,当有多个目录时,请注意分隔符,多个GOPATH的时候Windows是分号,Linux系统是冒号,当有多个GOPATH时,默认会将go get的内容放在第一个目录下
1515

1616

1717
以上 $GOPATH 目录约定有三个子目录:
@@ -29,22 +29,22 @@ GOPATH允许多个目录,当有多个目录时,请注意分隔符,多个go
2929

3030
执行如下代码
3131

32-
cd $GOPATH/src
33-
mkdir mymath
34-
32+
cd $GOPATH/src
33+
mkdir mymath
34+
3535
新建文件sqrt.go,内容如下
3636

37-
// $GOPATH/src/mymath/sqrt.go源码如下:
38-
package mymath
39-
40-
func Sqrt(x float64) float64 {
41-
z := 0.0
42-
for i := 0; i < 1000; i++ {
43-
z -= (z*z - x) / (2 * x)
44-
}
45-
return z
46-
}
47-
37+
// $GOPATH/src/mymath/sqrt.go源码如下:
38+
package mymath
39+
40+
func Sqrt(x float64) float64 {
41+
z := 0.0
42+
for i := 0; i < 1000; i++ {
43+
z -= (z*z - x) / (2 * x)
44+
}
45+
return z
46+
}
47+
4848
这样我的应用包目录和代码已经新建完毕,注意:package的名称必须和目录名保持一致
4949

5050
## 编译应用
@@ -56,101 +56,103 @@ GOPATH允许多个目录,当有多个目录时,请注意分隔符,多个go
5656

5757
安装完之后,我们可以进入如下目录
5858

59-
cd $GOPATH/pkg/$GOOS_$GOARCH/mymath.a
60-
59+
cd $GOPATH/pkg/$GOOS_$GOARCH/mymath.a
60+
6161
这个.a文件是应用包,相当于一个函数库一样,那么我们如何进行调用呢?
6262

6363
接下来我们新建一个应用程序来调用
6464

6565
新建应用包mathapp
6666

67-
cd $GOPATH/src
68-
mkdir mathapp
69-
vim main.go
70-
67+
cd $GOPATH/src
68+
mkdir mathapp
69+
vim main.go
70+
7171
// `$GOPATH/src/mathapp/main.go`源码:
7272

73-
package main
73+
package main
7474

75-
import (
76-
"mymath"
77-
"fmt"
78-
)
75+
import (
76+
"mymath"
77+
"fmt"
78+
)
7979

80-
func main() {
81-
fmt.Printf("Hello, world. Sqrt(2) = %v\n", mymath.Sqrt(2))
82-
}
80+
func main() {
81+
fmt.Printf("Hello, world. Sqrt(2) = %v\n", mymath.Sqrt(2))
82+
}
8383

8484
如何编译程序呢?进入该应用目录,然后执行`go build`,那么在该目录下面会生成一个mathapp的可执行文件
8585

86-
./mathapp
86+
./mathapp
8787

8888
输出如下内容
8989

90-
Hello, world. Sqrt(2) = 1.414213562373095
91-
90+
Hello, world. Sqrt(2) = 1.414213562373095
91+
9292
如何安装该应用,进入该目录执行`go install`,那么在$GOPATH/bin/下增加了一个可执行文件mathapp,这样可以在命令行输入如下命令就可以执行
9393

94-
mathapp
95-
94+
mathapp
95+
9696
也是输出如下内容
9797

98-
Hello, world. Sqrt(2) = 1.414213562373095
98+
Hello, world. Sqrt(2) = 1.414213562373095
9999

100100
## 获取远程包
101101
go语言有一个获取远程包的工具就是`go get`,目前go get支持多数开源社区(例如:github、googlecode、bitbucket、Launchpad)
102-
102+
103103
go get github.com/astaxie/beedb
104104

105105
通过这个命令可以获取相应的源码,对应的开源平台采用不同的源码控制工具,例如github采用git、googlecode采用hg,所以要想获取这些源码,必须先安装相应的源码控制工具
106106

107107
通过上面获取的代码在我们本地的源码相应的代码结构如下
108108

109-
$GOPATH
110-
src
111-
|--github.com
112-
|-astaxie
113-
|-beedb
114-
pkg
115-
|--相应平台
116-
|-github.com
117-
|--astaxie
118-
|beedb.a
119-
120-
go get本质上可以理解为首先第一步是通过源码工具clone代码到src下面,然后执行`go install`
109+
$GOPATH
110+
src
111+
|--github.com
112+
|-astaxie
113+
|-beedb
114+
pkg
115+
|--相应平台
116+
|-github.com
117+
|--astaxie
118+
|beedb.a
119+
120+
go get本质上可以理解为首先第一步是通过源码工具clone代码到src下面,然后执行`go install`
121121

122122
在代码中如何使用远程包,很简单的就是和使用本地包一样,只要在开头import相应的路径就可以
123123

124-
import "github.com/astaxie/beedb"
124+
import "github.com/astaxie/beedb"
125125

126126
## 程序的整体结构
127127
通过上面建立的我本地的mygo的目录结构如下所示
128128

129-
bin/
130-
mathapp
131-
pkg/
132-
平台名/ 如:darwin_amd64、linux_amd64
133-
mymath.a
134-
github.com/
135-
astaxie/
136-
beedb.a
137-
src/
138-
mathapp
139-
main.go
140-
mymath/
141-
sqrt.go
142-
github.com/
143-
astaxie/
144-
beedb/
145-
beedb.go
146-
util.go
147-
129+
bin/
130+
mathapp
131+
pkg/
132+
平台名/ 如:darwin_amd64、linux_amd64
133+
mymath.a
134+
github.com/
135+
astaxie/
136+
beedb.a
137+
src/
138+
mathapp
139+
main.go
140+
mymath/
141+
sqrt.go
142+
github.com/
143+
astaxie/
144+
beedb/
145+
beedb.go
146+
util.go
147+
148148
从上面的结构我们可以很清晰的看到,bin目录下面存的是编译之后可执行的文件,pkg下面存放的是函数包,src下面保存的是应用源代码
149149

150-
## links
151-
* [目录](<preface.md>)
152-
* 上一节: [GO安装](<1.1.md>)
153-
* 下一节: [GO 命令](<1.3.md>)
154-
155-
## LastModified
156-
* $Id$
150+
- - -
151+
[1] Windows系统中环境变量的形式为`%GOPATH%`,本书只使用Unix形式,Windows用户请自行替换。
152+
## links
153+
* [目录](<preface.md>)
154+
* 上一节: [GO安装](<1.1.md>)
155+
* 下一节: [GO 命令](<1.3.md>)
156+
157+
## LastModified
158+
* $Id$

0 commit comments

Comments
 (0)