go - 在插件中找不到本地包
问题描述
我正在用 Golang 编写一个插件,我正在尝试导入一个包,该包比插件高一级。但是,我不可能找到包裹。
包名是:com_styx_proto
插件路径:SomeCoolUser/go/src/go_poc/plugins/styxBotDetectGrpc/styxBotDetectGrpc.go
试图访问的包路径:SomeCoolUser/go/src/go_poc/plugins/styx.pb.go
此代码不起作用:
import (
"com_styx_proto"
"io/ioutil"
"net/http"
"time"
"fmt"
)
func main() {
fmt.Println("Hello World")
}
构建时出错:无法加载 go_poc/plugins:格式错误的模块路径“go_poc/plugins”:第一个路径元素中缺少点
解决方案
要导入不属于标准库的包,请使用其文件系统路径。对于您的情况,如果您尝试在 .../go_poc/plugins 下导入包,请编写:
import (
com_styx_proto "go_poc/plugins"
)
此外,通常的做法是使用目录的最后一个组件作为包名,因此请考虑更改目录结构以匹配包名。