我有一个main.go
package main
import (
"context"
"fmt"
"log"
model "model"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
)
func handler(...){
}
Run Code Online (Sandbox Code Playgroud)
我尝试导入目录中的模型model,该文件被称为model.go
它只包含:
package model
type xxx struct {
xxx
}
Run Code Online (Sandbox Code Playgroud)
我尝试在 main 中导入它,但出现错误:
build: cannot load model: cannot find module providing package model
Run Code Online (Sandbox Code Playgroud)
Ham*_*nis 11
如果您的模块model不是本地的,那么您可以使用托尼的答案,它会正常工作,但如果您在本地使用此模块,那么您将需要在文件中添加路径go.mod。
例如,本地模块model仅包含model.go以下内容
package model
type Example struct {
Name string
}
func (e *Example) Foo() string {
return e.Name
}
Run Code Online (Sandbox Code Playgroud)
对于这个本地模块,必须使用命令初始化该模块go mod init model,并且该模块的内容./model/go.mod将是
module model
go 1.13
Run Code Online (Sandbox Code Playgroud)
在导入此模块的主模块中,您需要添加以下行
require model v1.0.0
replace model v1.0.0 => {Absolute or relative path to the model module}
Run Code Online (Sandbox Code Playgroud)
所以,你的main测试模块的go.mod文件将如下所示
module main
require model v1.0.0
replace model v1.0.0 => ./model
go 1.13
Run Code Online (Sandbox Code Playgroud)
通过设置,您可以在该test模块中使用该模块,只需import "model"
因此,当使用 main 方法测试模块时
package main
import (
model "model"
)
func main() {
example := model.Example{
Name: "Hello World",
}
println(example.Foo())
}
Run Code Online (Sandbox Code Playgroud)
输出将是
Hello World
Run Code Online (Sandbox Code Playgroud)
如果你go.mod看起来像这样:
module github.com/meakesbia/myproject
go 1.14
Run Code Online (Sandbox Code Playgroud)
那么您需要使用完整的模块引用导入模块包:
import "github.com/meakesbia/myproject/model"
Run Code Online (Sandbox Code Playgroud)
如果它是一个完全本地的项目,则替换github.com/meakesbia为模型名称,go.mod例如:
module meakesbia/myproject
go 1.14
Run Code Online (Sandbox Code Playgroud)
import "meakesbia/myproject/model"
Run Code Online (Sandbox Code Playgroud)
您不需要replace向文件添加指令,除非您要对从githubgo.mod等导入的模块进行本地更改。
| 归档时间: |
|
| 查看次数: |
18247 次 |
| 最近记录: |