golang 對 package import 一探究竟
阿新 • • 發佈:2018-12-27
剛開始學golang,它的模組不像node裡的那麼直觀,直接在一個地方exports 另一個地方 require 就行,弄的我半天都沒弄懂機制
接下來把我的經驗分享下:
例如我們已有檔案的目錄結構為,package分為add和main:
addNum.go的程式碼:
package add
func Add(a, b int) int {
return a + b
}
func mult(a, b int) int {
return a * b
}
test01.go程式碼:
package main
func main() {
}
我們要在test01.go中呼叫add.go中的Add方法,其實很簡單:
package main
import (
"fmt"
"../add" // 使用相對路徑找到add這個包也就是資料夾
)
func main() {
sum := add.Add(1, 2) // 呼叫的時候直接包名.方法名就行
fmt.Print(sum)
}
注意:
1.檔名可以和該包名不一致,但檔案中使用的包名必須要和該包名一致。
例:就像我這裡的檔名是addNum.go但是宣告包的時候為:package add 要和上層包名也就是資料夾名一致
2.如果函式名的首字母大寫,表示該函式是公有的,可以被其他程式呼叫,如果首字母小寫,該函式就是是私有的
例:我在main函式中如果這樣呼叫:add.mult(1,2) 就會報錯 //error cannot refer to unexported name add.mult
最後介紹下幾種常用的import方法:
import( "fmt" ) //然後我們程式碼裡面可以通過如下的方式呼叫 //fmt.Println("hello world") import( . "fmt" ) //這個點操作的含義就是這個包匯入之後在你呼叫這個包的函式時,你可以省略字首的包名,也就是前面你調 //用的fmt.Println("hello world")可以省略的寫成Println("hello world") import( f "fmt" ) 別名操作的話呼叫包函式時字首變成了我們的字首,即f.Println("hello world") import ( "database/sql" _ "github.com/ziutek/mymysql/godrv" ) //_操作其實是引入該包,而不直接使用包裡面的函式,而是呼叫了該包裡面的init函式。
感謝您的閱讀!如果文章中有任何錯誤,或者您有更好的理解和建議,歡迎和我聯絡!