golang的哪些坑爷事: package实践
zolo · · 21977 次点击 · · 开始浏览在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)}
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
在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)}