首页 >后端开发 >Golang >我可以将 Go 库和 CLI 捆绑在同一目录中吗?

我可以将 Go 库和 CLI 捆绑在同一目录中吗?

Barbara Streisand
Barbara Streisand原创
2024-12-02 20:09:15666浏览

Can I Bundle a Go Library and CLI in the Same Directory?

您可以将库和 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn