1 回答
TA贡献1829条经验 获得超7个赞
您可以将子包与Go 模块一起使用。Go 模块是 Go 的新依赖管理解决方案——它们让你在外部工作,GOPATH
并让你管理你拥有的每个依赖的确切版本。
模块还允许您定义一组具有相同导入路径前缀的 Go 包。当您编写函数时,这使您可以在模块中导入其他包。
您正在部署的功能需要位于模块的根目录。
这是一个示例文件结构以及如何导入包:
.
├── cmd
│ └── main.go # Useful for testing. Can import and setup your function.
├── function.go # Can import example.com/foo/helperpackage
├── function_test.go
├── go.mod # module example.com/foo
└── helperpackage
└── helper.go
此设置在 中具有您的功能function.go并由 测试function_test.go。它们位于名为example.com/foo. helperpackage可以通过function.go使用导入example.com/foo/helperpackage。
这也有一个cmd目录,这可能有助于本地测试。您可以导入example.com/foo并启动将您的函数注册为 HTTP 处理程序的 HTTP 服务器。例如:
package main
import (
"log"
"net/http"
"example.com/foo"
)
func main() {
http.Handle("/HelloHTTP", foo.HelloHTTP)
log.Fatal(http.ListenAndServe(":8080", nil))
}
注意:您可以使用供应商目录来获得相同的结果。但是,您的函数导入的所有包都需要位于 vendor 目录中(具有完整的导入路径),这可行,但维护起来很麻烦。将子包复制到供应商目录中并不常见,因此我不推荐这样做。
- 1 回答
- 0 关注
- 89 浏览
添加回答
举报