golang找不到本地路径的模块

xak*_*p35 5 import package go

我想将一些 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 代码以获取更多信息。