參考《go語言編程入門與實戰技巧》
操作系統:WIN10,IDE:goland
1.編寫自己的包
(1)在$GOPATH/src路徑下新建文件夾
這裏我創建了一個名爲mypkg的文件夾。
(2)在新建的文件夾下新建一個go文件
這裏我創建了一個test.go文件。
(3)在goland中編寫包
展開external libraries,在GOPATH的src下找到剛剛新建的文件並打開。
在文件中添加函數,這裏添加了判斷是否爲奇數和是否爲偶數的兩個函數。
package even
func Even(i int) bool {
return i % 2 == 0
}
func odd(i int) bool {
return i % 2 == 1
}
2.使用自己的包
package main
import (
"fmt"
"mypkg"
)
func main() {
i := 5
fmt.Printf("Is %d even? %v\n", i, even.Even(i))
}
注意:這裏使用了even包裏的Even函數,如果使用odd函數會報以下錯誤:
這是因爲odd是一個私有函數,在go語言中,並沒有使用public和private這樣的關鍵字來控制可見性,而是通過首字母大小寫來控制的(包括函數和變量),大寫表示可以被其他包訪問,小寫則不可以。
3.總結
上面的嘗試中,我新建的路徑名爲mypkg,新建的go文件名爲test.go,而實際的包名爲even,關於這三個命名我分析如下。
首先,文件夾名是包的路徑,也就是其他包調用時要import的,也就是說,其他包調用時需要import “文件夾”。
而文件名則是沒有限制的,通常根據文件內容來起,事實上,一個文件夾下通常有多個go文件,這些文件的名稱並無限制,但是同一路徑下的go文件中“package 包名”這一行攜帶的包名一定要一樣,否則會報錯。
包名就是實際的go文件中“package 包名”中的包名,這是實際使用時需要的,也就是說,用法應該是這樣:
import "文件夾名"
包名.函數名()
一般情況下,文件夾名和包名會起成一樣的,go自帶的包基本都是這樣。