在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:cgsssrcpkg01
在同一個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:cgsssrc est
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:cgsssrc est
package main import "fmt"import pkg012 "pkg01" func main() { fmt.Println(pkg012.PKG_NAME)}