我有一个名为“tatata”的 Go 模块。它仅在我的机器上开发,因此它不包含模块名称中任何 URL 的任何路径。
如果main我的模块中只有一个包,它可以正常工作。但是,如果我在模块中创建两个包,就会遇到一些问题。
这是树:
./|
|- go.mod
|-src
|- main
| | - main.go
|
|- api
| - api.go
Run Code Online (Sandbox Code Playgroud)
文件内容:
go.mod
module tatata
go 1.13
Run Code Online (Sandbox Code Playgroud)
main.go
package main
import "fmt"
import "tatata/api"
func main() {
fmt.Println("Hello world")
api.Test1()
}
Run Code Online (Sandbox Code Playgroud)
api.go
package api
import "fmt"
func Test1() {
fmt.Println("Testing API")
}
Run Code Online (Sandbox Code Playgroud)
当我尝试构建时,我发出go build ./src/main并收到以下错误:
build tatata/src/main: cannot load tatata/api: malformed module path "tatata/api": missing dot in first path element
现在,如果我尝试放置一个虚拟点,例如将模块重命名为tatata.com我会收到错误,build tatata.com/src/main: cannot load tatata.com/api: cannot find module providing package tatata.com/api因为显然我的包/模块在该 URL 中不可用。
GOPATH 为空,即未设置。
问题:
a) 什么是正确的方法,即在单个 Go 模块中使用多个包时命名模块和导入?
b) Go 模块的名称中没有点是不可能的吗?!
c) 您能否指出任何具有构建设置的工作示例,其中包含单个 go 模块和模块中的多个包?
我可以在一个 go 模块中包含多个包吗?
是的当然。
如何?
你什么都不用做,它就是有效的。
(您的问题是:您尝试以错误的名称导入 api 包。模块内的导入路径的形式为<modulename>/<relative-filepath-from-module-root>。)
| 归档时间: |
|
| 查看次数: |
4942 次 |
| 最近记录: |