我正在尝试Go的新模块系统,并且无法访问本地软件包.以下项目位于我的gopath外部桌面上的文件夹中.
我的项目结构如下:
/
- /platform
- platform.go
- main.go
- go.mod
Run Code Online (Sandbox Code Playgroud)
// platform.go
package platform
import "fmt"
func Print() {
fmt.Println("Hi")
}
Run Code Online (Sandbox Code Playgroud)
// main.go
package main
import "platform"
func main() {
platform.Print()
}
Run Code Online (Sandbox Code Playgroud)
go build main.go
告诉我
cannot find module for path platform
Run Code Online (Sandbox Code Playgroud)
Eva*_*ran 54
作为一个新来的人,我没有立即理解接受的答案 \xe2\x80\x93\xc2\xa0 顺便说一下,这很棒。这是针对那些新人的简短答案!
\n在 go 中,模块/包表示为您在代码中导入的 url:
\nimport your.org/internal/fancy_module\n
Run Code Online (Sandbox Code Playgroud)\n可是等等!我的代码不在网址上,发生了什么?
\n这就是围棋的聪明之处。即使没有 URL,你也假装有一个 URL。因为:
\ngoogle.com/go-api/user
与定义不冲突your.org/internal/user
埃文,这一切都很棒,但是我如何导入相对路径呢?
\n好问题!您可以通过更改go.mod
文件以包含以下行来导入:
module fancy_module\n\ngo 1.16\n\nreplace your.org/fancy_module => ../path/to/fancy_module\n
Run Code Online (Sandbox Code Playgroud)\n
Muh*_*man 41
首先让我定义modules
的集合packages
。在Go 11中,我使用如下的go模块:
如果两个软件包都在同一个项目中,则可以执行以下操作go.mod
:
module github.com/userName/moduleName
在你里面 main.go
import "github.com/userName/moduleName/platform"
但是,如果它们是单独的模块,即不同的物理路径,并且您仍然想导入本地packages
而不将其远程发布到github,例如,可以通过使用replace
指令来实现。
给定模块名称github.com/otherModule
和platform
,正如您所称的,它是其中的唯一软件包。在您的主模块中go.mod
添加以下行:
module github.com/userName/mainModule
require "github.com/userName/otherModule" v0.0.0
replace "github.com/userName/otherModule" v0.0.0 => "local physical path to the otherModule"
Run Code Online (Sandbox Code Playgroud)
注意:路径应指向模块的根目录,并且可以是绝对路径或相对路径。
里面main.go
,导入一个特定的包像platform
来自otherModule
:
import "github.com/userName/otherModule/platform"
Run Code Online (Sandbox Code Playgroud)
这是对Golang模块的简要介绍
Hal*_*lci 28
我强烈建议你使用go工具链,它可以解决这些问题.使用vscode-go插件的Visual Studio代码非常有用.
这里的问题是Go需要相对于您$GOPATH/src
或module
import语句的相对路径.根据您所处的位置GOPATH
,导入路径也应包含该路径.在这种情况下,import语句必须包含go模块路径go.mod
GOPATH
假设您的项目位于此处:
$GOPATH/src/github.com/myuser/myproject
Run Code Online (Sandbox Code Playgroud)
您的导入路径应为:
import "github.com/myuser/myproject/platform"
Run Code Online (Sandbox Code Playgroud)
VGO
假设你的go.mod文件是:
module example.com/myuser/myproject
Run Code Online (Sandbox Code Playgroud)
您的导入路径应为:
import "example.com/myuser/myproject/platform"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20818 次 |
最近记录: |