Skip to content

Commit 893b611

Browse files
committed
fix
1 parent 4b480b5 commit 893b611

File tree

5 files changed

+238
-238
lines changed

5 files changed

+238
-238
lines changed

01.0.md

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
# 1 GO环境配置
2-
3-
欢迎来到Go的世界,让我们开始探索吧!
4-
5-
Go是一种新的语言,一种并发的、带垃圾回收的、快速编译的语言。它具有以下特点:
6-
7-
- 它可以在一台计算机上用几秒钟的时间编译一个大型的Go程序。
8-
- Go为软件构造提供了一种模型,它使依赖分析更加容易,且避免了大部分C风格include文件与库的开头。
9-
- Go是静态类型的语言,它的类型系统没有层级。因此用户不需要在定义类型之间的关系上花费时间,这样感觉起来比典型的面向对象语言更轻量级。
10-
- Go完全是垃圾回收型的语言,并为并发执行与通信提供了基本的支持。
11-
- 按照其设计,Go打算为多核机器上系统软件的构造提供一种方法。
12-
13-
Go试图成为结合解释型编程的轻松、动态类型语言的高效以及静态类型语言的安全的编译型语言。它也打算成为现代的,支持网络与多核计算的语言。要满足这些目标,需要解决一些语言上的问题:一个富有表达能力但轻量级的类型系统,并发与垃圾回收机制,严格的依赖规范等等。这些无法通过库或工具解决好,因此Go也就应运而生了。
14-
15-
在本章中,我们将讲述Go的安装方法,以及如何配置项目信息。
16-
17-
## 目录
18-
19-
![](images/navi1.png?raw=true)
20-
21-
## links
22-
* [目录](<preface.md>)
23-
* 下一节: [Go安装](<01.1.md>)
1+
# 1 GO环境配置
2+
3+
欢迎来到Go的世界,让我们开始探索吧!
4+
5+
Go是一种新的语言,一种并发的、带垃圾回收的、快速编译的语言。它具有以下特点:
6+
7+
- 它可以在一台计算机上用几秒钟的时间编译一个大型的Go程序。
8+
- Go为软件构造提供了一种模型,它使依赖分析更加容易,且避免了大部分C风格include文件与库的开头。
9+
- Go是静态类型的语言,它的类型系统没有层级。因此用户不需要在定义类型之间的关系上花费时间,这样感觉起来比典型的面向对象语言更轻量级。
10+
- Go完全是垃圾回收型的语言,并为并发执行与通信提供了基本的支持。
11+
- 按照其设计,Go打算为多核机器上系统软件的构造提供一种方法。
12+
13+
Go是一种编译型语言,它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静态类型的安全性。它也打算成为现代的,支持网络与多核计算的语言。要满足这些目标,需要解决一些语言上的问题:一个富有表达能力但轻量级的类型系统,并发与垃圾回收机制,严格的依赖规范等等。这些无法通过库或工具解决好,因此Go也就应运而生了。
14+
15+
在本章中,我们将讲述Go的安装方法,以及如何配置项目信息。
16+
17+
## 目录
18+
19+
![](images/navi1.png?raw=true)
20+
21+
## links
22+
* [目录](<preface.md>)
23+
* 下一节: [Go安装](<01.1.md>)

01.2.md

Lines changed: 160 additions & 160 deletions
Original file line numberDiff line numberDiff line change
@@ -1,160 +1,160 @@
1-
# 1.2 GOPATH与工作空间
2-
3-
## GOPATH设置
4-
go 命令依赖一个重要的环境变量:$GOPATH<sup>1</sup>
5-
6-
*(注:这个不是Go安装目录。下面以笔者的工作目录为说明,请替换自己机器上的工作目录。)*
7-
8-
在类似 Unix 环境大概这样设置:
9-
```sh
10-
export GOPATH=/home/apple/mygo
11-
```
12-
Windows 设置如下,新建一个环境变量名称叫做GOPATH:
13-
```sh
14-
GOPATH=c:\mygo
15-
```
16-
GOPATH允许多个目录,当有多个目录时,请注意分隔符,多个GOPATH的时候Windows是分号,Linux系统是冒号,当有多个GOPATH时,默认会将go get的内容放在第一个目录下
17-
18-
19-
以上 $GOPATH 目录约定有三个子目录:
20-
21-
- src 存放源代码(比如:.go .c .h .s等)
22-
- pkg 编译后生成的文件(比如:.a)
23-
- bin 编译后生成的可执行文件(为了方便,可以把此目录加入到 $PATH 变量中)
24-
25-
以后我所有的例子都是以mygo作为我的gopath目录
26-
27-
## 应用目录结构
28-
建立包和目录:$GOPATH/src/mymath/sqrt.go(包名:"mymath")
29-
30-
以后自己新建应用或者一个代码包都是在src目录下新建一个文件夹,文件夹名称代码包名称,当然也允许多级目录,例如在src下面新建了目录$GOPATH/src/github.com/astaxie/beedb 那么这个包名称就是“github.com/astaxie/beedb”
31-
32-
执行如下代码
33-
```sh
34-
cd $GOPATH/src
35-
mkdir mymath
36-
```
37-
新建文件sqrt.go,内容如下
38-
```go
39-
// $GOPATH/src/mymath/sqrt.go源码如下:
40-
package mymath
41-
42-
func Sqrt(x float64) float64 {
43-
z := 0.0
44-
for i := 0; i < 1000; i++ {
45-
z -= (z*z - x) / (2 * x)
46-
}
47-
return z
48-
}
49-
```
50-
这样我的应用包目录和代码已经新建完毕,注意:package的名称必须和目录名保持一致
51-
52-
## 编译应用
53-
上面我们已经建立了自己的应用包,如何进行编译安装呢?有两种方式可以进行安装
54-
55-
1、只要进入对应的应用包目录,然后执行`go install`,就可以安装了
56-
57-
2、在任意的目录执行如下代码`go install mymath`
58-
59-
安装完之后,我们可以进入如下目录
60-
```sh
61-
cd $GOPATH/pkg/${GOOS}_${GOARCH}
62-
//可以看到如下文件
63-
mymath.a
64-
```
65-
这个.a文件是应用包,相当于一个函数库一样,那么我们如何进行调用呢?
66-
67-
接下来我们新建一个应用程序来调用
68-
69-
新建应用包mathapp
70-
```sh
71-
cd $GOPATH/src
72-
mkdir mathapp
73-
cd mathapp
74-
vim main.go
75-
```
76-
// `$GOPATH/src/mathapp/main.go`源码:
77-
```go
78-
package main
79-
80-
import (
81-
"mymath"
82-
"fmt"
83-
)
84-
85-
func main() {
86-
fmt.Printf("Hello, world. Sqrt(2) = %v\n", mymath.Sqrt(2))
87-
}
88-
```
89-
如何编译程序呢?进入该应用目录,然后执行`go build`,那么在该目录下面会生成一个mathapp的可执行文件
90-
```sh
91-
./mathapp
92-
```
93-
输出如下内容
94-
```sh
95-
Hello, world. Sqrt(2) = 1.414213562373095
96-
```
97-
如何安装该应用,进入该目录执行`go install`,那么在$GOPATH/bin/下增加了一个可执行文件mathapp,这样可以在命令行输入如下命令就可以执行
98-
99-
mathapp
100-
101-
也是输出如下内容
102-
103-
Hello, world. Sqrt(2) = 1.414213562373095
104-
105-
## 获取远程包
106-
go语言有一个获取远程包的工具就是`go get`,目前go get支持多数开源社区(例如:github、googlecode、bitbucket、Launchpad)
107-
108-
go get github.com/astaxie/beedb
109-
110-
通过这个命令可以获取相应的源码,对应的开源平台采用不同的源码控制工具,例如github采用git、googlecode采用hg,所以要想获取这些源码,必须先安装相应的源码控制工具
111-
112-
通过上面获取的代码在我们本地的源码相应的代码结构如下
113-
114-
$GOPATH
115-
src
116-
|--github.com
117-
|-astaxie
118-
|-beedb
119-
pkg
120-
|--相应平台
121-
|-github.com
122-
|--astaxie
123-
|beedb.a
124-
125-
go get本质上可以理解为首先第一步是通过源码工具clone代码到src下面,然后执行`go install`
126-
127-
在代码中如何使用远程包,很简单的就是和使用本地包一样,只要在开头import相应的路径就可以
128-
129-
import "github.com/astaxie/beedb"
130-
131-
## 程序的整体结构
132-
通过上面建立的我本地的mygo的目录结构如下所示
133-
134-
bin/
135-
mathapp
136-
pkg/
137-
平台名/ 如:darwin_amd64、linux_amd64
138-
mymath.a
139-
github.com/
140-
astaxie/
141-
beedb.a
142-
src/
143-
mathapp
144-
main.go
145-
mymath/
146-
sqrt.go
147-
github.com/
148-
astaxie/
149-
beedb/
150-
beedb.go
151-
util.go
152-
153-
从上面的结构我们可以很清晰的看到,bin目录下面存的是编译之后可执行的文件,pkg下面存放的是函数包,src下面保存的是应用源代码
154-
155-
- - -
156-
[1] Windows系统中环境变量的形式为`%GOPATH%`,本书主要使用Unix形式,Windows用户请自行替换。
157-
## links
158-
* [目录](<preface.md>)
159-
* 上一节: [GO安装](<01.1.md>)
160-
* 下一节: [GO 命令](<01.3.md>)
1+
# 1.2 GOPATH与工作空间
2+
3+
## GOPATH设置
4+
go 命令依赖一个重要的环境变量:$GOPATH<sup>1</sup>
5+
6+
*(注:这个不是Go安装目录。下面以笔者的工作目录为说明,请替换自己机器上的工作目录。)*
7+
8+
在类似 Unix 环境大概这样设置:
9+
```sh
10+
export GOPATH=/home/apple/mygo
11+
```
12+
Windows 设置如下,新建一个环境变量名称叫做GOPATH:
13+
```sh
14+
GOPATH=c:\mygo
15+
```
16+
GOPATH允许多个目录,当有多个目录时,请注意分隔符,多个目录的时候Windows是分号,Linux系统是冒号,当有多个GOPATH时,默认会将go get的内容放在第一个目录下
17+
18+
19+
以上 $GOPATH 目录约定有三个子目录:
20+
21+
- src 存放源代码(比如:.go .c .h .s等)
22+
- pkg 编译后生成的文件(比如:.a)
23+
- bin 编译后生成的可执行文件(为了方便,可以把此目录加入到 $PATH 变量中)
24+
25+
以后我所有的例子都是以mygo作为我的gopath目录
26+
27+
## 应用目录结构
28+
建立包和目录:$GOPATH/src/mymath/sqrt.go(包名:"mymath")
29+
30+
以后自己新建应用或者一个代码包都是在src目录下新建一个文件夹,文件夹名称代码包名称,当然也允许多级目录,例如在src下面新建了目录$GOPATH/src/github.com/astaxie/beedb 那么这个包名称就是“github.com/astaxie/beedb”
31+
32+
执行如下代码
33+
```sh
34+
cd $GOPATH/src
35+
mkdir mymath
36+
```
37+
新建文件sqrt.go,内容如下
38+
```go
39+
// $GOPATH/src/mymath/sqrt.go源码如下:
40+
package mymath
41+
42+
func Sqrt(x float64) float64 {
43+
z := 0.0
44+
for i := 0; i < 1000; i++ {
45+
z -= (z*z - x) / (2 * x)
46+
}
47+
return z
48+
}
49+
```
50+
这样我的应用包目录和代码已经新建完毕,注意:package的名称必须和目录名保持一致
51+
52+
## 编译应用
53+
上面我们已经建立了自己的应用包,如何进行编译安装呢?有两种方式可以进行安装
54+
55+
1、只要进入对应的应用包目录,然后执行`go install`,就可以安装了
56+
57+
2、在任意的目录执行如下代码`go install mymath`
58+
59+
安装完之后,我们可以进入如下目录
60+
```sh
61+
cd $GOPATH/pkg/${GOOS}_${GOARCH}
62+
//可以看到如下文件
63+
mymath.a
64+
```
65+
这个.a文件是应用包,相当于一个函数库一样,那么我们如何进行调用呢?
66+
67+
接下来我们新建一个应用程序来调用
68+
69+
新建应用包mathapp
70+
```sh
71+
cd $GOPATH/src
72+
mkdir mathapp
73+
cd mathapp
74+
vim main.go
75+
```
76+
// `$GOPATH/src/mathapp/main.go`源码:
77+
```go
78+
package main
79+
80+
import (
81+
"mymath"
82+
"fmt"
83+
)
84+
85+
func main() {
86+
fmt.Printf("Hello, world. Sqrt(2) = %v\n", mymath.Sqrt(2))
87+
}
88+
```
89+
如何编译程序呢?进入该应用目录,然后执行`go build`,那么在该目录下面会生成一个mathapp的可执行文件
90+
```sh
91+
./mathapp
92+
```
93+
输出如下内容
94+
```sh
95+
Hello, world. Sqrt(2) = 1.414213562373095
96+
```
97+
如何安装该应用,进入该目录执行`go install`,那么在$GOPATH/bin/下增加了一个可执行文件mathapp,这样可以在命令行输入如下命令就可以执行
98+
99+
mathapp
100+
101+
也是输出如下内容
102+
103+
Hello, world. Sqrt(2) = 1.414213562373095
104+
105+
## 获取远程包
106+
go语言有一个获取远程包的工具就是`go get`,目前go get支持多数开源社区(例如:github、googlecode、bitbucket、Launchpad)
107+
108+
go get github.com/astaxie/beedb
109+
110+
通过这个命令可以获取相应的源码,对应的开源平台采用不同的源码控制工具,例如github采用git、googlecode采用hg,所以要想获取这些源码,必须先安装相应的源码控制工具
111+
112+
通过上面获取的代码在我们本地的源码相应的代码结构如下
113+
114+
$GOPATH
115+
src
116+
|--github.com
117+
|-astaxie
118+
|-beedb
119+
pkg
120+
|--相应平台
121+
|-github.com
122+
|--astaxie
123+
|beedb.a
124+
125+
go get本质上可以理解为首先第一步是通过源码工具clone代码到src下面,然后执行`go install`
126+
127+
在代码中如何使用远程包,很简单的就是和使用本地包一样,只要在开头import相应的路径就可以
128+
129+
import "github.com/astaxie/beedb"
130+
131+
## 程序的整体结构
132+
通过上面建立的我本地的mygo的目录结构如下所示
133+
134+
bin/
135+
mathapp
136+
pkg/
137+
平台名/ 如:darwin_amd64、linux_amd64
138+
mymath.a
139+
github.com/
140+
astaxie/
141+
beedb.a
142+
src/
143+
mathapp
144+
main.go
145+
mymath/
146+
sqrt.go
147+
github.com/
148+
astaxie/
149+
beedb/
150+
beedb.go
151+
util.go
152+
153+
从上面的结构我们可以很清晰的看到,bin目录下面存的是编译之后可执行的文件,pkg下面存放的是函数包,src下面保存的是应用源代码
154+
155+
- - -
156+
[1] Windows系统中环境变量的形式为`%GOPATH%`,本书主要使用Unix形式,Windows用户请自行替换。
157+
## links
158+
* [目录](<preface.md>)
159+
* 上一节: [GO安装](<01.1.md>)
160+
* 下一节: [GO 命令](<01.3.md>)

0 commit comments

Comments
 (0)