在 Go 中,應用程式是以套件來組織的。 套件是位於同一個資料夾中的原始碼檔案的集合。 同一個資料夾中的所有原始碼檔案,在檔案開頭都必須有相同的套件名稱。 依照慣例,套件的名稱會與其所在的資料夾名稱相同。
package greeting
Go 提供了豐富的標準函式庫套件,你可以使用import關鍵字在程式中使用它們。
標準函式庫套件是使用它們的名稱來匯入的。
package greeting
import "fmt"
可以將多個套件以括號包起來,一次匯入。
package greeting
import (
"errors"
"fmt"
)
第三方套件是使用套件所在位置的 URL 來匯入的。 匯入時可以為套件取一個別名。 這可以用來避免套件名稱衝突:
package greeting
import (
"errors"
errs "github.com/pkg/errors"
)
匯入的套件之後會以套件名稱或別名來表示:
// using the internal errors package
errors.New("Connection not established")
// using the errors package located at github.com/pkg/errors by alias
errs.New("Connection not established")
Go 會根據項目的宣告方式,來決定它是否能被其他套件中的程式碼呼叫。
若要讓函式、型別、變數或常數對外可見(稱為exported),名稱必須以大寫字母開頭。
這類似於其他程式語言(例如 Java)使用public和private等存取修飾子的方式。
package greeting
// Hello is a public function (callable from other packages).
func Hello(name string) string {
return "Hello " + name
}
// hello is a private function (not callable from other packages).
func hello(name string) string {
return "Hello " + name
}
同樣的規則也適用於自訂struct型別中的欄位名稱:以大寫字母開頭的欄位名稱是對外可見的,以小寫字母開頭則否。