這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
在golang中package是個困惑的概念, 特別是package還可以與folder不同名, 委實讓我噁心了一把.
關於golang的package的最佳實務:
package is folder.
package name is folder name.
package path is folder path.
信耶穌得永生!
1. 同一個folder存在不同package, 編譯錯誤:
D:/go/bin/go.exe build [E:/cgss/src/pkg01]
can't load package: package pkg01: found packages pkg01 (pkg01.go) and pkg012 (pkg02.go) in E:\cgss\src\pkg01
在同一個folder存在多個package, 則載入失敗. 即使是main, 也一樣
D:/go/bin/go.exe build [E:/cgss/src/test]
can't load package: package test: found packages main (cgss.go) and file01 (file01.go) in E:\cgss\src\test
2. folder name與package name不同(即package path與package name不同), 則需要使用
"import alias path"文法, 即:
import <package_name> <package_path>
否則編譯錯誤: package name不是合法標識符.
D:/go/bin/go.exe build [E:/cgss/src/test]
can't load package: package test: found packages main (cgss.go) and file01 (file01.go) in E:\cgss\src\test
package main
import "fmt"import pkg012 "pkg01"
func main() { fmt.Println(pkg012.PKG_NAME)}