我想从主程序包中推出一些API到单独的程序包中:
myapp/
main.go
myapi/
myapi.go
我在main.go
里面
package main
import "./myapi"
...
myapi.go
开头为:
package myapi
...
当我尝试运行main时,似乎找不到我的myapi
#include
。它给了我以下错误:
D:\go\myapp> go run .
build _/D_/go/myapp/myapi: cannot find module for path _/D_/go/myapp/myapi
我来自C / C ++领域,如何将golang中的子文件夹包含进来是非常不明显的。你能帮我吗?
答案 0 :(得分:1)
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
的方法是等效的。
阅读Using Go Modules和How to write Go code以获得更多信息。