package遵循以下原則:
1.package
是最基本的分發單位和工程管理中依賴關係的體現
2. 每個go語言源**檔案開頭都必須要有乙個package
宣告,表示源**檔案所屬包
3. 要生成go語言可執行程式,必須要有名為main
的package
包,且在該包下必須有且只有乙個main
函式
4.同乙個路徑下只能存在乙個package
,乙個package
可以由多個源**檔案組成
按照我個人的理解,乙個目錄就是乙個包,該目錄下的所有檔案必須屬於同乙個包。
再來看看多檔案的package
// file: main.go
package main
import
"fmt"
func learn()
func main()
// file: eat.go
package main
import
"fmt"
func eat()
在命令列編譯一下,然後執行
$ go build . # 會在當前目錄生成名為`go`的執行檔案
$ ./go
結果輸出
---
-main
start--
--iam
learning.i
ameating.-
---main
end---
-
import
語句的唯一作用就是匯入原始碼檔案所依賴的包,而且匯入的包必須在原始碼檔案裡用到,否則會報錯(在vs code裡如果輸入乙個沒有匯入的包函式,vs code會自動匯入)
import
的寫法有兩種格式,我個人更傾向於第二種
import
"package1"
import
"package2"
import
"package3"
improt (
"package1",
"package2",
"package3"
)
跟package
類似,import
原理遵守以下幾個原則:
如果乙個main
匯入其他的包,包會被順序匯入
如果匯入的包(pkg1
)依賴其他的包(包pkg2
),會首先匯入pkg2
,然後初始化pkg2
中的常量與變數,如果pkg2中有init函式,會自動執行init
所有包匯入完成後才會對main
的常量和變數進行初始化,然後執行main
中的init
函式(如果有的話),最後執行main
函式
如果乙個包被匯入多次實際上只會匯入一次
關於上面第三條規的import
多重依賴的流程如下圖所示
// 此處省略一些**...
iii.println("hello")
如果別名是.
的話,則可以這樣呼叫(一般不建議這樣使用)
import . "fmt"
// 此處省略一些**...
println("hello")
有乙個最特別的情況,如果別名是_
的話,表示只註冊該包(初始化全域性常量和變數,且執行其init函式),並不會實際引入該包。
Go語言入坑
認識並安裝go語言開發環境 go語言簡介 go語言特點 go語言開發的應用 一些見解 go語言環境搭建 go語言基礎知識 第乙個go應用helloword 配置 go語言常用關鍵字 go語言開發工具liteide go語言資料型別 其它基礎 流程控制語句 switch for迴圈 go語言函式 go...
go語言的坑
package main import fmt func main mp make map int int fmt.println for range 坑 for index,value range slice 根本原因在於for range是用乙個變數承接mp中的內容的 for key,value...
Go語言 閉包
使用閉包實現乙個小功能。判斷給定的檔名是否帶有字尾,如果有指定字尾就直接輸出,如果不帶字尾就新增字尾後,輸出檔名 package main import fmt strings func makesuffix suffix string func string string return name ...