两个包可以驻留在同一个目录中吗?
开发需要库和命令行界面 (CLI) 的项目时,同一目录中存在的两个包之间经常会遇到冲突。由于 Go 编译器要求名为“main”的包并以“func main”作为入口点,因此认为不可能为库和 CLI 提供单独的包。
解决方案:嵌套包结构
但是,可以通过将两个包移动到与包相同的目录中的新文件夹来解决此问题“main.go”文件。关键是确保新包从“$GOPATH”中的正确路径导入。
示例:
考虑更新的目录结构:
whatever.io/ myproject/ a/ # New folder a.go main.go
在“main.go”中,从其嵌套中导入新包路径:
package main import ( "../myproject/a" ) func main() { a.Hello() }
在“a.go”中,定义库的函数:
package a import ( "fmt" ) func Hello() { fmt.Println("hello from a") }
构建和运行:
现在,您可以成功构建并运行项目:
go run main.go # Prints "hello from a" go build # Creates the executable without errors
此解决方案允许您同时拥有一个库(a包)和CLI(main包)在同一目录下,解决同一目录下两个同名包造成的冲突。
以上是Go 项目可以在同一目录中同时拥有库和 CLI 吗?的详细内容。更多信息请关注PHP中文网其他相关文章!