ch10-4: review

This commit is contained in:
chai2010 2016-01-08 15:14:13 +08:00
parent b406bd3fe4
commit 0cd9078c88

View File

@ -1,6 +1,6 @@
## 10.4. 導入聲明 ## 10.4. 導入聲明
一個Go源文件可以在包聲明語句之後, 其他非導入聲明之前, 包含零到多個導入包聲明. 每個導入聲明可以單獨指定一個導入路徑, 通過圓括號包含指定多個導入路徑. 下面兩個導入形式是等價的, 但是第二種形式更爲常見. 可以在一個Go語言源文件包聲明語句之後其它非導入聲明語句之前包含零到多個導入包聲明語句。每個導入聲明可以單獨指定一個導入路徑也可以通過圓括號同時導入多個導入路徑。下面兩個導入形式是等價的但是第二種形式更爲常見。
```Go ```Go
import "fmt" import "fmt"
@ -12,7 +12,7 @@ import (
) )
``` ```
導入的包之間可以通過添加空行來分組; 通常將來自不同組織的包獨自分組. 導入順序無關緊要, 但是一般會根據字符串順序排列. (gofmt和goimports的都可以將不同分組的包獨立排序.) 導入的包之間可以通過添加空行來分組通常將來自不同組織的包獨自分組。包的導入順序無關緊要但是在每個分組中一般會根據字符串順序排列。gofmt和goimports工具都可以將不同分組導入的包獨立排序。
```Go ```Go
import ( import (
@ -25,7 +25,7 @@ import (
) )
``` ```
如果我們想同時導入兩個名字相同的包, 例如 math/rand 和 crypto/rand, 導入聲明必鬚至少爲一個同名包指定一個新的包名, 以避免衝突. 這叫做導入包重命名. 如果我們想同時導入兩個有着名字相同的包例如math/rand包和crypto/rand包那麽導入聲明必鬚至少爲一個同名包指定一個新的包名以避免衝突。這叫做導入包的重命名。
```Go ```Go
import ( import (
@ -34,8 +34,8 @@ import (
) )
``` ```
導入包重命名隻影響當前的Go源文件. 其他的Go源文件如果導入了相同的包, 可以用導入包原本的名字或重命名爲另一個完全不同的名字. 導入包的重命名隻影響當前的源文件。其它的源文件如果導入了相同的包,可以用導入包原本默認的名字或重命名爲另一個完全不同的名字。
導入包重命名是一個有用的特性, 不僅僅是爲了解決名字衝突. 如果導入的一個包名很笨重, 特别是在一些自動生成的代碼中, 這時候用一個簡短名稱會更方便. 選擇用簡短名稱重命名導入包時候最好統一, 比避免包名混亂. 選擇另一個包名稱還可以幫助避免和本地普通變量名産生衝突. 例如, 如果文件中已經有了一個名爲 path 的變量, 我們可以將"path"標準包重命名爲pathpkg. 導入包重命名是一個有用的特性它不僅僅隻是爲了解決名字衝突。如果導入的一個包名很笨重特别是在一些自動生成的代碼中這時候用一個簡短名稱會更方便。選擇用簡短名稱重命名導入包時候最好統一以避免包名混亂。選擇另一個包名稱還可以幫助避免和本地普通變量名産生衝突。例如如果文件中已經有了一個名爲path的變量那麽我們可以將"path"標準包重命名爲pathpkg。
每個導入聲明明確指定了當前包和導入包之間的依賴關繫. 如果遇到包循環導入的情況, Go的構建工具將報告錯誤. 每個導入聲明語句都明確指定了當前包和被導入包之間的依賴關繫。如果遇到包循環導入的情況Go語言的構建工具將報告錯誤。