去导入本地包

mea*_*bia 8 go

我有一个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)


ton*_*nys 6

如果你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等导入的模块进行本地更改。

  • 你好,这完全是本地的。所以它不在 GitHub 上。 (2认同)