Skip to content

Commit accc3cc

Browse files
committed
Fix many CN to TW terms issues
1 parent 4050418 commit accc3cc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

93 files changed

+583
-574
lines changed

zh-tw/01.0.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ Go 是一種新的語言,一種併發的、帶垃圾回收的、快速編譯
1010
- Go 完全是垃圾回收型的語言,併為併發執行與通訊提供了基本的支援。
1111
- 按照其設計,Go 打算為多核機器上系統軟體的構造提供一種方法。
1212

13-
Go 是一種編譯型語言,它結合瞭解釋型語言的遊刃有餘,動態型別語言的開發效率,以及靜態型別的安全性。它也打算成為現代的,支援網路與多核計算的語言。要滿足這些目標,需要解決一些語言上的問題:一個富有表達能力但輕量級的型別系統,併發與垃圾回收機制,嚴格的依賴規範等等。這些無法透過函式庫或工具解決好,因此 Go 也就應運而生了。
13+
Go 是一種編譯型語言,它結合了解釋型語言的遊刃有餘,動態型別語言的開發效率,以及靜態型別的安全性。它也打算成為現代的,支援網路與多核計算的語言。要滿足這些目標,需要解決一些語言上的問題:一個富有表達能力但輕量級的型別系統,併發與垃圾回收機制,嚴格的依賴規範等等。這些無法透過函式庫或工具解決好,因此 Go 也就應運而生了。
1414

1515
在本章中,我們將講述 Go 的安裝方法,以及如何配置專案資訊。
1616

1717
## 目錄
1818

19-
![](images/navi1.png?raw=true)
19+
![](images/navi1.png)
2020

2121
## links
2222
* [目錄](<preface.md>)

zh-tw/01.1.md

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Go 1.5 徹底移除 C 程式碼,Runtime、Compiler、Linker 均由 Go 編寫
4040

4141
當你設定完畢之後在命令列裡面輸入`go`,看到如下圖片即說明你已經安裝成功
4242

43-
![](images/1.1.mac.png?raw=true)
43+
![](images/1.1.mac.png)
4444

4545
圖 1.1 原始碼安裝之後執行 Go 命令的圖
4646

@@ -79,15 +79,15 @@ Linux 系統使用者可透過在 Terminal 中執行命令`arch`(即`uname -m`)
7979

8080
### Mac 安裝
8181

82-
訪問 [ 下載地址][downlink],32 位系統下載 go1.4.2.darwin-386-osx10.8.pkg(更新的版本已無 32 位下載),64 位系統下載 go1.8.3.darwin-amd64.pkg,雙擊下載檔案,一路預設安裝點選下一步,這個時候 go 已經安裝到你的系統中,預設已經在 PATH 中增加了相應的`~/go/bin`,這個時候開啟終端,輸入`go`
82+
訪問 [Golang 下載地址](https://golang.org/dl/),32 位系統下載 go1.4.2.darwin-386-osx10.8.pkg(更新的版本已無 32 位下載),64 位系統下載 go1.8.3.darwin-amd64.pkg,雙擊下載檔案,一路預設安裝點選下一步,這個時候 go 已經安裝到你的系統中,預設已經在 PATH 中增加了相應的`~/go/bin`,這個時候開啟終端,輸入`go`
8383

8484
看到類似上面原始碼安裝成功的圖片說明已經安裝成功
8585

8686
如果出現 go 的 Usage 資訊,那麼說明 go 已經安裝成功了;如果出現該命令不存在,那麼可以檢查一下自己的 PATH 環境變中是否包含了 go 的安裝目錄。
8787

8888
### Linux 安裝
8989

90-
訪問 [ 下載地址][downlink],32 位系統下載 go1.8.3.linux-386.tar.gz,64 位系統下載 go1.8.3.linux-amd64.tar.gz,
90+
訪問 [Golang 下載地址](https://golang.org/dl/),32 位系統下載 go1.8.3.linux-386.tar.gz,64 位系統下載 go1.8.3.linux-amd64.tar.gz,
9191

9292
假定你想要安裝 Go 的目錄為 `$GO_INSTALL_DIR`,後面替換為相應的目錄路徑。
9393

@@ -97,15 +97,15 @@ Linux 系統使用者可透過在 Terminal 中執行命令`arch`(即`uname -m`)
9797

9898
然後執行`go`
9999

100-
![](images/1.1.linux.png?raw=true)
100+
![](images/1.1.linux.png)
101101

102102
圖 1.2 Linux 系統下安裝成功之後執行 go 顯示的資訊
103103

104104
如果出現 go 的 Usage 資訊,那麼說明 go 已經安裝成功了;如果出現該命令不存在,那麼可以檢查一下自己的 PATH 環境變中是否包含了 go 的安裝目錄。
105105

106106
### Windows 安裝 ###
107107

108-
訪問[Golang 下載頁][downlink],32 位請選擇名稱中包含 windows-386 的 msi 安裝套件,64 位請選擇名稱中包含 windows-amd64 的。下載好後執行,不要修改預設安裝目錄 C:\Go\,若安裝到其他位置會導致不能執行自己所編寫的 Go 程式碼。安裝完成後預設會在環境變數 Path 後新增 Go 安裝目錄下的 bin 目錄 `C:\Go\bin\`,並新增環境變數 GOROOT,值為 Go 安裝根目錄 `C:\Go\`
108+
訪問[Golang 下載頁](https://golang.org/dl/),32 位請選擇名稱中包含 windows-386 的 msi 安裝套件,64 位請選擇名稱中包含 windows-amd64 的。下載好後執行,不要修改預設安裝目錄 C:\Go\,若安裝到其他位置會導致不能執行自己所編寫的 Go 程式碼。安裝完成後預設會在環境變數 Path 後新增 Go 安裝目錄下的 bin 目錄 `C:\Go\bin\`,並新增環境變數 GOROOT,值為 Go 安裝根目錄 `C:\Go\`
109109

110110
**驗證是否安裝成功**
111111

@@ -185,7 +185,6 @@ homebrew 是 Mac 系統下面目前使用最多的管理軟體的工具,目前
185185
2.安裝 go
186186

187187
```sh
188-
189188
brew update && brew upgrade
190189
brew install go
191190
brew install git
@@ -196,5 +195,3 @@ brew install mercurial //可選安裝
196195
* [目錄](<preface.md>)
197196
* 上一節: [Go 環境配置](<01.0.md>)
198197
* 下一節: [GOPATH 與工作空間](<01.2.md>)
199-
200-
[downlink]:http://golang.org/dl/ "Go 安裝套件下載"

zh-tw/01.2.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414
```sh
1515
export GOPATH=/home/apple/mygo
1616
```
17-
為了方便,應該新建以上資料夾,並且上一行加入到 `.bashrc` 或者 `.zshrc` 或者自己的 `sh` 的配置檔案中。
17+
為了方便,應該建立以上資料夾,並且上一行加入到 `.bashrc` 或者 `.zshrc` 或者自己的 `sh` 的配置檔案中。
1818

19-
Windows 設定如下,新建一個環境變數名稱叫做 GOPATH:
19+
Windows 設定如下,建立一個環境變數名稱叫做 GOPATH:
2020
```sh
2121
GOPATH=c:\mygo
2222
```
@@ -36,7 +36,7 @@ GOPATH 允許多個目錄,當有多個目錄時,請注意分隔符,多個
3636
GOPATH 下的 src 目錄就是接下來開發程式的主要目錄,所有的原始碼都是放在這個目錄下面,那麼一般我們的做法就是一個目錄一個專案,例如: $GOPATH/src/mymath 表示 mymath 這個套件或者可執行應用,這個根據 package 是 main 還是其他來決定,main 的話就是可執行應用,其他的話就是套件,這個會在後續詳細介紹 package。
3737

3838

39-
所以當新建應用或者一個程式碼套件時都是在 src 目錄下新建一個資料夾,資料夾名稱一般是程式碼套件名稱,當然也允許多級目錄,例如在 src 下面新建了目錄$GOPATH/src/github.com/astaxie/beedb 那麼這個套件路徑就是"github.com/astaxie/beedb",套件名稱是最後一個目錄 beedb
39+
所以當建立應用或者一個程式碼套件時都是在 src 目錄下建立一個資料夾,資料夾名稱一般是程式碼套件名稱,當然也允許多階層目錄,例如在 src 下面建立了目錄$GOPATH/src/github.com/astaxie/beedb 那麼這個套件路徑就是"github.com/astaxie/beedb",套件名稱是最後一個目錄 beedb
4040

4141

4242
下面我就以 mymath 為例來講述如何編寫套件,執行如下程式碼
@@ -45,7 +45,7 @@ cd $GOPATH/src
4545
mkdir mymath
4646
```
4747

48-
新建檔案 sqrt.go,內容如下
48+
建立檔案 sqrt.go,內容如下
4949
```go
5050
// $GOPATH/src/mymath/sqrt.go 原始碼如下:
5151
package mymath
@@ -58,7 +58,7 @@ func Sqrt(x float64) float64 {
5858
return z
5959
}
6060
```
61-
這樣我的套件目錄和程式碼已經新建完畢,注意:一般建議 package 的名稱和目錄名保持一致
61+
這樣我的套件目錄和程式碼已經建立完畢,注意:一般建議 package 的名稱和目錄名保持一致
6262

6363
## 編譯應用
6464
上面我們已經建立了自己的套件,如何進行編譯安裝呢?有兩種方式可以進行安裝
@@ -75,9 +75,9 @@ mymath.a
7575
```
7676
這個.a 檔案是套件,那麼我們如何進行呼叫呢?
7777

78-
接下來我們新建一個應用程式來呼叫這個套件
78+
接下來我們建立一個應用程式來呼叫這個套件
7979

80-
新建套件 mathapp
80+
建立套件 mathapp
8181

8282
```sh
8383
cd $GOPATH/src
@@ -100,7 +100,7 @@ func main() {
100100
}
101101
```
102102

103-
可以看到這個的 package 是`main`,import 裡面呼叫的套件是`mymath`,這個就是相對於`$GOPATH/src`的路徑,如果是多級目錄,就在 import 裡面引入多級目錄,如果你有多個 GOPATH,也是一樣,Go 會自動在多個`$GOPATH/src`中尋找。
103+
可以看到這個的 package 是`main`,import 裡面呼叫的套件是`mymath`,這個就是相對於`$GOPATH/src`的路徑,如果是多階層目錄,就在 import 裡面引入多階層目錄,如果你有多個 GOPATH,也是一樣,Go 會自動在多個`$GOPATH/src`中尋找。
104104

105105
如何編譯程式呢?進入該應用目錄,然後執行`go build`,那麼在該目錄下面會產生一個 mathapp 的可執行檔案
106106
```sh
@@ -130,7 +130,7 @@ mathapp
130130

131131
go get github.com/astaxie/beedb
132132

133-
>go get -u 引數可以自動更新套件,而且當 go get 的時候會自動取得該套件依賴的其他第三方套件
133+
>go get -u 參數可以自動更新套件,而且當 go get 的時候會自動取得該套件依賴的其他第三方套件
134134
135135

136136
透過這個命令可以取得相應的原始碼,對應的開源平臺採用不同的原始碼控制工具,例如 github 採用 git、googlecode 採用 hg,所以要想取得這些原始碼,必須先安裝相應的原始碼控制工具

zh-tw/01.3.md

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
## Go 命令
44

5-
Go 語言自帶有一套完整的命令操作工具,你可以透過在命令列中執行 `go` 來檢視它們:
5+
Go 語言自帶有一套完整的命令列工具,你可以透過在命令列中執行 `go` 來檢視它們:
66

7-
![](images/1.1.mac.png?raw=true)
7+
![](images/1.1.mac.png)
88

99
圖 1.3 Go 命令顯示詳細的資訊
1010

11-
這些命令對於我們平時編寫的程式碼非常有用,接下來就讓我們瞭解一些常用的命令
11+
這些命令對於我們平時編寫的程式碼非常有用,接下來就讓我們了解一些常用的命令
1212

1313
## go build
1414

@@ -35,24 +35,24 @@
3535

3636
`go build`的時候會選擇性地編譯以系統名結尾的檔案(Linux、Darwin、Windows、Freebsd)。例如 Linux 系統下面編譯只會選擇 array_linux.go 檔案,其它系統命名字尾檔案全部忽略。
3737

38-
引數的介紹
38+
參數的介紹
3939

4040
- `-o` 指定輸出的檔名,可以帶上路徑,例如 `go build -o a/b/c`
4141
- `-i` 安裝相應的套件,編譯+`go install`
4242
- `-a` 更新全部已經是最新的套件的,但是對標準套件不適用
43-
- `-n` 把需要執行的編譯命令打印出來,但是不執行,這樣就可以很容易的知道底層是如何執行的
43+
- `-n` 把需要執行的編譯命令顯示出來,但是不執行,這樣就可以很容易的知道底層是如何執行的
4444
- `-p n` 指定可以並行可執行的編譯數目,預設是 CPU 數目
4545
- `-race` 開啟編譯的時候自動檢測資料競爭的情況,目前只支援 64 位的機器
46-
- `-v` 打印出來我們正在編譯的套件名
47-
- `-work` 打印出來編譯時候的臨時資料夾名稱,並且如果已經存在的話就不要刪除
48-
- `-x` 打印出來執行的命令,其實就是和`-n`的結果類似,只是這個會執行
49-
- `-ccflags 'arg list'` 傳遞引數給 5c, 6c, 8c 呼叫
46+
- `-v` 顯示出來我們正在編譯的套件名
47+
- `-work` 顯示出來編譯時候的臨時資料夾名稱,並且如果已經存在的話就不要刪除
48+
- `-x` 顯示出來執行的命令,其實就是和`-n`的結果類似,只是這個會執行
49+
- `-ccflags 'arg list'` 傳遞參數給 5c, 6c, 8c 呼叫
5050
- `-compiler name` 指定相應的編譯器,gccgo 還是 gc
5151

52-
- `-gccgoflags 'arg list'` 傳遞引數給 gccgo 編譯連線呼叫
53-
- `-gcflags 'arg list'` 傳遞引數給 5g, 6g, 8g 呼叫
52+
- `-gccgoflags 'arg list'` 傳遞參數給 gccgo 編譯連線呼叫
53+
- `-gcflags 'arg list'` 傳遞參數給 5g, 6g, 8g 呼叫
5454
- `-installsuffix suffix` 為了和預設的安裝套件區別開來,採用這個字首來重新安裝那些依賴的套件,`-race`的時候預設已經是`-installsuffix race`,大家可以透過`-n`命令來驗證
55-
- `-ldflags 'flag list'` 傳遞引數給 5l, 6l, 8l 呼叫
55+
- `-ldflags 'flag list'` 傳遞參數給 5l, 6l, 8l 呼叫
5656
- `-tags 'tag list'` 設定在編譯的時候可以適配的那些 tag,詳細的 tag 限制參考裡面的 [Build Constraints](http://golang.org/pkg/go/build/)
5757

5858
## go clean
@@ -71,30 +71,30 @@
7171
MAINFILE(.exe) 由 go build MAINFILE.go 產生
7272
*.so 由 SWIG 產生
7373

74-
我一般都是利用這個命令清除編譯檔案,然後 github 遞交原始碼,在本機測試的時候這些編譯檔案都是和系統相關的,但是對於原始碼管理來說沒必要。
74+
我一般都是利用這個命令清除編譯檔案,然後 github 提交原始碼,在本機測試的時候這些編譯檔案都是和系統相關的,但是對於原始碼管理來說沒必要。
7575

7676
$ go clean -i -n
7777
cd /Users/astaxie/develop/gopath/src/mathapp
7878
rm -f mathapp mathapp.exe mathapp.test mathapp.test.exe app app.exe
7979
rm -f /Users/astaxie/develop/gopath/bin/mathapp
8080

81-
引數介紹
81+
參數介紹
8282

8383
- `-i` 清除關聯的安裝的套件和可執行檔案,也就是透過 go install 安裝的檔案
84-
- `-n` 把需要執行的清除命令打印出來,但是不執行,這樣就可以很容易的知道底層是如何執行的
84+
- `-n` 把需要執行的清除命令顯示出來,但是不執行,這樣就可以很容易的知道底層是如何執行的
8585
- `-r` 迴圈的清除在 import 中引入的套件
8686

87-
- `-x` 打印出來執行的詳細命令,其實就是`-n`列印的執行版本
87+
- `-x` 顯示出來執行的詳細命令,其實就是`-n`列印的執行版本
8888

8989
## go fmt
9090

9191
有過 C/C++經驗的讀者會知道,一些人經常為程式碼採取 K&R 風格還是 ANSI 風格而爭論不休。在 go 中,程式碼則有標準的風格。由於之前已經有的一些習慣或其它的原因我們常將程式碼寫成 ANSI 風格或者其它更合適自己的格式,這將為人們在閱讀別人的程式碼時新增不必要的負擔,所以 go 強制了程式碼格式(比如左大括號必須放在行尾),不按照此格式的程式碼將不能編譯透過,為了減少浪費在排版上的時間,go 工具集中提供了一個`go fmt`命令 它可以幫你格式化你寫好的程式碼檔案,使你寫程式碼的時候不需要關心格式,你只需要在寫完之後執行`go fmt <檔名>.go`,你的程式碼就被修改成了標準格式,但是我平常很少用到這個命令,因為開發工具裡面一般都帶了儲存時候自動格式化功能,這個功能其實在底層就是呼叫了`go fmt`。接下來的一節我將講述兩個工具,這兩個工具都自帶了儲存檔案時自動化`go fmt`功能。
9292

93-
使用 go fmt 命令,其實是呼叫了 gofmt,而且需要引數-w,否則格式化結果不會寫入檔案。gofmt -w -l src,可以格式化整個專案。
93+
使用 go fmt 命令,其實是呼叫了 gofmt,而且需要參數-w,否則格式化結果不會寫入檔案。gofmt -w -l src,可以格式化整個專案。
9494

95-
所以 go fmt 是 gofmt 的上層一個套件裝的命令,我們想要更多的個性化的格式化可以參考 [gofmt](http://golang.org/cmd/gofmt/)
95+
所以 go fmt 是 gofmt 的上層一個封裝命令,如果想要更多的自訂格式化,可以參考 [gofmt](http://golang.org/cmd/gofmt/)
9696

97-
gofmt 的引數介紹
97+
gofmt 的參數介紹
9898

9999
- `-l` 顯示那些需要格式化的檔案
100100
- `-w` 把改寫後的內容直接寫入到檔案中,而不是作為結果列印到標準輸出。
@@ -116,10 +116,10 @@ gofmt 的引數介紹
116116

117117
所以為了`go get` 能正常工作,你必須確保安裝了合適的原始碼管理工具,並同時把這些命令加入你的 PATH 中。其實`go get`支援自訂域名的功能,具體參見`go help remote`
118118

119-
引數介紹
119+
參數介紹
120120

121121
- `-d` 只下載不安裝
122-
- `-f` 只有在你包含了`-u`引數的時候才有效,不讓`-u`去驗證 import 中的每一個都已經取得了,這對於本地 fork 的套件特別有用
122+
- `-f` 只有在你包含了`-u`參數的時候才有效,不讓`-u`去驗證 import 中的每一個都已經取得了,這對於本地 fork 的套件特別有用
123123
- `-fix` 在取得原始碼之後先執行 fix,然後再去做其他的事情
124124
- `-t` 同時也下載需要為執行測試所需要的套件
125125

@@ -130,7 +130,7 @@ gofmt 的引數介紹
130130

131131
這個命令在內部實際上分成了兩步操作:第一步是產生結果檔案(可執行檔案或者.a 套件),第二步會把編譯好的結果移到`$GOPATH/pkg`或者`$GOPATH/bin`
132132

133-
引數支援`go build`的編譯引數。大家只要記住一個引數`-v`就好了,這個隨時隨地的可以檢視底層的執行資訊。
133+
參數支援`go build`的編譯參數。大家只要記住一個參數`-v`就好了,這個隨時隨地的可以檢視底層的執行資訊。
134134

135135
## go test
136136

@@ -141,9 +141,9 @@ gofmt 的引數介紹
141141
ok compress/gzip 0.033s
142142
...
143143

144-
預設的情況下,不需要任何的引數,它會自動把你原始碼套件下面所有 test 檔案測試完畢,當然你也可以帶上引數,詳情請參考`go help testflag`
144+
預設的情況下,不需要任何的參數,它會自動把你原始碼套件下面所有 test 檔案測試完畢,當然你也可以帶上參數,詳情請參考`go help testflag`
145145

146-
這裡我介紹幾個我們常用的引數
146+
這裡我介紹幾個我們常用的參數
147147

148148
- `-bench regexp` 執行相應的 benchmarks,例如 `-bench=.`
149149
- `-cover` 開啟測試覆蓋率
@@ -155,10 +155,11 @@ gofmt 的引數介紹
155155

156156

157157
- `go tool fix .` 用來修復以前老版本的程式碼到新版本,例如 go1 之前老版本的程式碼轉化到 go1,例如 API 的變化
158-
- `go tool vet directory|files` 用來分析當前目錄的程式碼是否都是正確的程式碼,例如是不是呼叫 fmt.Printf 裡面的引數不正確,例如函式裡面提前 return 瞭然後出現了無用程式碼之類別的
158+
- `go tool vet directory|files` 用來分析當前目錄的程式碼是否都是正確的程式碼,例如是不是呼叫 fmt.Printf 裡面的參數不正確,例如函式裡面提前 return 了然後出現了無用程式碼之類別的
159159

160160
## go generate
161-
這個命令是從 Go1.4 開始才設計的,用於在編譯前自動化產生某類別程式碼。`go generate``go build`是完全不一樣的命令,透過分析原始碼中特殊的註釋,然後執行相應的命令。這些命令都是很明確的,沒有任何的依賴在裡面。而且大家在用這個之前心裡面一定要有一個理念,這個`go generate`是給你用的,不是給使用你這個套件的人用的,是方便你來產生一些程式碼的。
161+
162+
這個命令是從 Go1.4 開始才設計的,用於在編譯前自動化產生某類別程式碼。`go generate``go build`是完全不一樣的命令,透過分析原始碼中特殊的註釋,然後執行相應的命令。這些命令都是很明確的,沒有任何的依賴在裡面。而且大家在用這個之前心裡面一定要有一個觀念,這個 `go generate` 是給你用的,不是給使用你這個套件的人用的,主要是方便你自動產生一些程式碼。
162163

163164
這裡我們來舉一個簡單的例子,例如我們經常會使用 `yacc` 來產生程式碼,那麼我們常用這樣的命令:
164165

@@ -201,7 +202,7 @@ gofmt 的引數介紹
201202

202203
go run 編譯並執行 Go 程式
203204

204-
以上這些工具還有很多引數沒有一一介紹,使用者可以使用`go help 命令 ` 取得更詳細的幫助資訊。
205+
以上這些工具還有很多參數沒有一一介紹,使用者可以使用`go help 命令 ` 取得更詳細的幫助資訊。
205206

206207

207208
## links

0 commit comments

Comments
 (0)