我有一个项目,我想构建多个访问相同逻辑(来自相同包)的二进制文件。
我的文件夹结构如下所示
.
├── app
│ ├── bin_a
│ │ └── bin_a.go
│ ├── bin_b
│ │ └── bin_b.go
├── pkg
│ ├── model.go
└── go.mod
go.mod
module github.com/user/module
go 1.19
bin_a.开始
package main
import("github.com/user/module/pkg/model")
func main() {
user := User{}
}
model.go
package main
type User struct { }
如果我尝试构建bin_a
(例如go build app/bin_a/bin_a.go
),则会收到以下错误消息
no required module provides package github.com/user/module/pkg/model; to add it:
go get github.com/user/module/pkg/model
package command-line-arguments: cannot find package
这很奇怪,因为它是同一个包!我还确保了gopath中有一个符号链接,例如/home/user/go/github.com/user/module/app/
到我的存储库
我该怎么解决这个问题?
1条答案
按热度按时间jdzmm42g1#
首先,你没有pkg/model包,在bin_a/bin_a.go文件中你正确地命名了你的包,但是我认为你应该在bin_a/和bin_b/文件夹下命名你的文件main.go,这些仍然是主要的入口点。
其次,文件夹名应该是包名,你应该在pkg/下创建一个model/文件夹,并在model中设置包名,转到
package model
,或者当你把这个放在pkg/文件夹下时,再使用package pkg
。在bin_a/bin_a.go中,您应该使用以下导入路径:
import "github.com/user/module/pkg"
或与我的建议import "github.com/user/module/pkg/model"
因此,文件夹结构将为:
代码:
您应该检查这些文档: