2017-02-12 83 views
1

如果我需要在Go中爲一個包導入兩個或多個文件,那麼習慣用法是什麼?將Go包導入分割成文件

直到今天我不喜歡這樣寫道:

file1.go

package A 

import "os" 

file2.go

package A 

import "os" 

回答

4

這不是被慣用的一個問題,它的範圍的問題。

Import declarations的範圍是包含文件Spec: Import declarations:

的進口聲明表示包含聲明的源文件取決於導入的包(§Program initialization and execution)的功能,並且能夠訪問該包的出口標識符。

Spec: Declarations and scope:此外

轉到使用blocks詞法作用域:
...
3.導入的包的包名稱的範圍是包含的文件的文件進口聲明。
...

這意味着,如果有是在多個文件中需要一個包(形成一個包或多個,沒關係),你必須在所有的單獨導入這些文件。

你應該做的是審查和修改你如何分離文件之間的代碼,因爲它可能是一個很好的方法,將函數和聲明分組到相同的依賴關係(取決於相同的一組包) ,所以你只需要導入這些包一次。

還要注意的是,如果包mypkg的某些文件依賴於一組其他包的,但不是mypkg的其他文件,也可能是有利可圖的mypkg分成基礎上,依賴兩個獨立的包。儘管這些決定大部分都是主觀的,但是你知道你的案例是否有意義。

+0

很好的答案,謝謝! – Steffen