go 使用自己寫的包

參考《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自帶的包基本都是這樣。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章