【Golang 基礎】Go 語言的程式結構
阿新 • • 發佈:2018-12-12
Go 語言的專案結構
一般,一個 Go 專案在 GOPATH 下,會有如下三個目錄
. ├── bin // 存放編譯後的可執行檔案 ├── pkg // 存放編譯後的包檔案 └── src // 存放專案原始檔
一般情況下,bin 和 pkg 目錄可以不建立,go 命令會自動構建(如 go install),只需要建立 src 目錄即可。
Go 程式的一般結構
// 當前程式的包名
package main
// 匯入其他包
import "fmt"
// 常量的宣告
const _PI float64 = 3.14
// 全域性變數宣告
var title string = "Go 語言學習筆記"
// 一般型別宣告
type newType int
// 結構宣告
type Student struct{
}
// 介面的宣告
type ILearn interface{
}
// 由 main 作為程式入口的啟動點
func main(){
fmt.Println("Hello Golang")
}
- Go 程式是通過
package
來組織的(與 python 類似),package
是 最基本的分發單位 和 工程管理中依賴關係的體現; - 每個 Go 語言原始碼檔案開頭必須擁有一個
pakcage
宣告,表示原始碼檔案所屬程式碼包。預設情況下,除main
的package
包外,其他的包名對應資料夾名稱; - 要生成 Go 語言的可執行程式,必須有
main
的package
包,且必須在該包下面有main()
函式; - 同一個路徑下只能存在一個
package
,一個package
可以拆分成多個原始檔; - 通過
import
關鍵字來匯入其他非main
包; - 通過
const
關鍵字來定義常量; - 通過在函式體外部使用
var
關鍵字定義全域性變數; - 通過
type
關鍵字來進行結構(struct
)或介面(interface
)的宣告; - 通過
func
關鍵字來宣告函式;
Go 語言中 import 詳解
-
import
語句可以匯入原始碼檔案中所依賴的package
包,匯入包後可以使用<PackageName>.<FuncName>
-
如果匯入包之後未呼叫其中的函式或型別將會報編譯錯誤;
-
import
可以使用以下兩種方式:- 單行匯入
package main import "fmt" import "os" import "time" import "io"
- 多行匯入
package main import ( "fmt" "os" "time" "io" )
-
如果一個
main
包匯入其他包,包將被順序匯入; -
如果匯入的包依賴其他包(如:包B),會首先匯入包B,然後初始化包B中的常量和變數,最後如果包B中有
init
函式,將會自動執行init
函式; -
所有包匯入完成後才會對
main
中變數和常量進行初始化,然後執行main
的init
函式(如果存在),最後才會執行main
函式; -
如果一個包被匯入多次,則該包只會被匯入一次;
在使用 import
匯入 package
包時,可以為其設定別名:
- 自定義別名:
package main
import io "fmt"
func main(){
io.Println("Hello Golang")
}
package main
import (
io "fmt"
)
func main(){
io.Println("Hello Golang")
}
- 點(
.
)標識的匯入包後,呼叫該包中的函式時,可以省略報名字首名稱(不建議使用)
package main
import . "fmt"
func main(){
Println("Hello Golang")
}
- 下劃線(
_
)識別符號匯入包時,並不是匯入整個包,而是執行該包中的init
函式,因此無法通過包名來呼叫包中的其他函或屬性。使用下劃線(_
)操作通常是未來註冊包裡的引擎,外部可以方便的使用;
以上三點不可以同時使用。