为了账号安全,请及时绑定邮箱和手机立即绑定

去导入本地包

去导入本地包

Go
噜噜哒 2022-05-23 16:53:34
我有一个main.gopackage mainimport (    "context"    "fmt"    "log"    model "model"    "github.com/aws/aws-lambda-go/events"    "github.com/aws/aws-lambda-go/lambda")func handler(...){}我尝试导入目录中的模型model并调用文件model.go它只包含:package modeltype xxx struct {    xxx}我尝试主要导入它,但出现错误:build: cannot load model: cannot find module providing package model
查看完整描述

2 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

如果您的模块model不是本地的,那么您可以使用 Tonys 答案,它会正常工作,但如果您在本地使用此模块,那么您需要在go.mod文件中添加路径。


因此,例如,本地模块model仅包含model.go具有以下内容的模块


package model


type Example struct {

    Name string

}


func (e *Example) Foo() string {

    return e.Name

}

对于这个本地模块,必须必须用命令初始化模块,go mod init model并且内容./model/go.mod将是


module model

go 1.13

在要导入此模块的主模块中,您需要添加以下行


require model v1.0.0

replace model v1.0.0 => {Absolute or relative path to the model module}

因此,您的main测试模块的go.mod文件将如下所示


module main


require model v1.0.0

replace model v1.0.0 => ./model


go 1.13

通过设置,您可以在此模块中使用此test模块,只需import  "model"


因此,当使用 main 方法测试模块时


package main


import (

    model "model"

)


func main() {

    example := model.Example{

        Name: "Hello World",

    }

    println(example.Foo())

}

输出将是


Hello World


查看完整回答
反对 回复 2022-05-23
?
当年话下

TA贡献1890条经验 获得超9个赞

如果你go.mod看起来像这样:


module github.com/meakesbia/myproject


go 1.14

那么您需要使用完整的模块参考导入模块包:


import "github.com/meakesbia/myproject/model"

如果它是一个完全本地的项目,则替换github.com/meakesbia为模型名称,go.mod例如:


module meakesbia/myproject


go 1.14

import "meakesbia/myproject/model"

您不需要向文件添加replace指令,go.mod除非您对从例如github导入的模块进行本地更改。


查看完整回答
反对 回复 2022-05-23
  • 2 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信