我想将一些 API 从主包推出到单独的包中:
myapp/
main.go
myapi/
myapi.go
Run Code Online (Sandbox Code Playgroud)
里面main.go
我有
package main
import "./myapi"
...
Run Code Online (Sandbox Code Playgroud)
开头myapi.go
是:
package myapi
...
Run Code Online (Sandbox Code Playgroud)
当我尝试运行 main 时,似乎找不到我的myapi
#include
. 它给我以下错误:
D:\go\myapp> go run .
build _/D_/go/myapp/myapi: cannot find module for path _/D_/go/myapp/myapi
Run Code Online (Sandbox Code Playgroud)
我来自 C/C++ 世界,如何从 golang 的子文件夹中包含它非常不明显。你能帮我解决这个问题吗?
小智 4
Go 使用称为模块路径的东西。这些是标识您的包的路径。它们不一定与文件系统相关。
模块路径的一个示例是github.com/hajimehoshi/ebiten
。
如果您使用 Go 模块,这也是 Go 自动下载模块的路径。
如果您使用 $GOPATH,则模块源的路径将为go/src/github.com/hajimehoshi/ebiten
.
使用新的模块路径初始化您的模块go mod init <module path>
。一般来说,这将是您的 GitHub 存储库,没有https://
. 这将允许您和其他人的代码能够使用该模块路径进行访问。myapi
然后应该可以通过 访问import "github.com/username/repo/myapi"
。
如果您仍然希望使用旧的 $GOPATH 方法,只需将代码放入go/src/<module path>
. 访问方法myapi
是等价的。
请阅读使用 Go 模块和如何编写 Go 代码以获取更多信息。
归档时间: |
|
查看次数: |
14055 次 |
最近记录: |