您可以将库和 CLI 捆绑在同一目录中吗?
拥有一个目录,其中包含库(导出函数)和命令行界面(CLI 可执行文件)提出了它是否实用的问题。当 go 编译器需要具有“main”函数的包来执行程序以及具有其函数的库时,就会出现问题。
问题:多个包
正如提供的示例所示,如果“main”和库包共存于同一目录中,则 go 编译器会抱怨在同一目录中查找多个包
解决方案:嵌套包
不是将包维护在同一目录中,一个简单的解决方案是在父目录中创建一个新的子目录来容纳库或 CLI 包。请记住更新您的导入以反映包的新位置。
嵌套包的示例
在下面修改后的示例中,“a”包被移动到“so-multipack”目录中的新子目录“a”:
so-multipack/ a/ a.go main.go
已更新main.go
package main import "../so-multipack/a" func main() { a.Hello() }
更新了a/a.go
package a import "fmt" func Hello() { fmt.Println("hello from a") }
编译成功
使用更新的目录结构,现在可以运行 go 命令成功:
go run main.go # Output: hello from a go build # Creates a "so-multipack" executable
通过将包嵌套在同一父目录中,我们可以成功容纳库和 CLI 可执行文件。
以上是我可以将 Go 库和 CLI 捆绑在同一目录中吗?的详细内容。更多信息请关注PHP中文网其他相关文章!