回到简体

This commit is contained in:
chai2010
2016-02-15 11:06:34 +08:00
parent 9e878f9944
commit 2b37b23285
177 changed files with 2354 additions and 2354 deletions

View File

@@ -1,10 +1,10 @@
### 10.7.2. 下
### 10.7.2. 下
使用Go言工具箱的go命令可以根據包導入路找到本地工作的包,甚至可以從互聯網上找到和更新包。
使用Go言工具箱的go命令可以根据包导入路找到本地工作的包,甚至可以从互联网上找到和更新包。
使用命令`go get`可以下載一個單一的包或者用`...`載整個子目里面的每包。Go言工具箱的go命令同時計算併下載所依的每包,也是前一例子中golang.org/x/net/html自動出現在本地工作區目録的原因。
使用命令`go get`可以下载一个单一的包或者用`...`载整个子目里面的每包。Go言工具箱的go命令同时计算并下载所依的每包,也是前一例子中golang.org/x/net/html自动出现在本地工作区目录的原因。
一旦`go get`命令下了包,然就是安包或包對應的可行的程序。我們將在下一節再關註它的細節,現在隻是展示整個下載過程是如何的簡單。第一命令是取golint工具它用於檢測Go源代碼的編程風格是否有問題。第二命令是用golint命令2.6.2的gopl.io/ch2/popcount包代碼進行編碼風格檢査。它友好地告了忘了包的文
一旦`go get`命令下了包,然就是安包或包对应的可行的程序。我们将在下一节再关注它的细节,现在只是展示整个下载过程是如何的简单。第一命令是取golint工具它用于检测Go源代码的编程风格是否有问题。第二命令是用golint命令2.6.2的gopl.io/ch2/popcount包代码进行编码风格检查。它友好地告了忘了包的文
```
$ go get github.com/golang/lint/golint
@@ -13,9 +13,9 @@ src/gopl.io/ch2/popcount/main.go:1:1:
package comment should be of the form "Package popcount ..."
```
`go get`命令支持前流行的託管網站GitHub、Bitbucket和Launchpad可以直接向它的版本控製繫統請求代碼。對於其它的站,你可能需要指定版本控製繫統的具體路徑和協議,例如 Git或Mercurial。`go help importpath`取相的信息。
`go get`命令支持前流行的托管网站GitHub、Bitbucket和Launchpad可以直接向它的版本控制系统请求代码。对于其它的站,你可能需要指定版本控制系统的具体路径和协议,例如 Git或Mercurial。`go help importpath`取相的信息。
`go get`命令取的代碼是眞實的本地存儲倉庫,而不僅僅隻是複製源文件,因此你依然可以使用版本管理工具比本地代碼的變更或者切到其它的版本。例如golang.org/x/net包目録對應一個Git倉庫
`go get`命令取的代码是真实的本地存储仓库,而不仅仅只是复制源文件,因此你依然可以使用版本管理工具比本地代码的变更或者切到其它的版本。例如golang.org/x/net包目录对应一个Git仓库
```
$ cd $GOPATH/src/golang.org/x/net
@@ -24,7 +24,7 @@ origin https://go.googlesource.com/net (fetch)
origin https://go.googlesource.com/net (push)
```
需要意的是入路含有的站域名和本地Git倉庫對應遠程服地址不相同,眞實的Git地址是go.googlesource.com。這其實是Go言工具的一特性,可以包用一自定義的導入路,但是眞實的代碼卻是由更通用的服提供例如googlesource.com或github.com。因爲頁面 https://golang.org/x/net/html 包含了如下的元數據,它告Go言的工具前包眞實的Git倉庫託管地址:
需要意的是入路含有的站域名和本地Git仓库对应远程服地址不相同,真实的Git地址是go.googlesource.com。这其实是Go言工具的一特性,可以包用一自定义的导入路,但是真实的代码却是由更通用的服提供例如googlesource.com或github.com。因为页面 https://golang.org/x/net/html 包含了如下的元数据,它告Go言的工具前包真实的Git仓库托管地址:
```
$ go build gopl.io/ch1/fetch
@@ -33,8 +33,8 @@ $ ./fetch https://golang.org/x/net/html | grep go-import
content="golang.org/x/net git https://go.googlesource.com/net">
```
如果指定`-u`命令行標誌參數`go get`命令將確保所有的包和依的包的版本都是最新的,然重新編譯和安裝它們。如果不包含該標誌參數的話,而且如果包已在本地存在,那麽代碼那麽將不會被自更新。
如果指定`-u`命令行标志参数`go get`命令将确保所有的包和依的包的版本都是最新的,然重新编译和安装它们。如果不包含该标志参数的话,而且如果包已在本地存在,那么代码那么将不会被自更新。
`go get -u`命令隻是簡單地保證每個包是最新版本,如果是第一次下載包則是比很方便的;但是對於發布程序可能是不合的,因本地程序可能需要對依賴的包做精的版本依管理。通常的解方案是使用vendor的目録用於存儲依賴包的固定版本的源代碼,對本地依的包的版本更新也是慎和持可控的。在Go1.5之前,一般需要改包的入路,所以複製後golang.org/x/net/html入路可能會變爲gopl.io/vendor/golang.org/x/net/html。最新的Go言命令已支持vendor特性但限篇幅這里併不討論vendor的具體細節。不可以通`go help gopath`命令看Vendor的助文
`go get -u`命令只是简单地保证每个包是最新版本,如果是第一次下载包则是比很方便的;但是对于发布程序可能是不合的,因本地程序可能需要对依赖的包做精的版本依管理。通常的解方案是使用vendor的目录用于存储依赖包的固定版本的源代码,对本地依的包的版本更新也是慎和持可控的。在Go1.5之前,一般需要改包的入路,所以复制后golang.org/x/net/html入路可能会变为gopl.io/vendor/golang.org/x/net/html。最新的Go言命令已支持vendor特性但限篇幅这里并不讨论vendor的具体细节。不可以通`go help gopath`命令看Vendor的助文
**練習 10.3:** http://gopl.io/ch1/helloworld?go-get=1 獲取內容,看本的代碼的眞實託管的址(`go get`求HTML頁面時包含了`go-get`參數,以别普通的瀏覽器請求)。
**练习 10.3:** http://gopl.io/ch1/helloworld?go-get=1 获取内容,看本的代码的真实托管的址(`go get`求HTML页面时包含了`go-get`参数,以别普通的浏览器请求)。