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

如何在另一个模块中使用“GOPATH”之外的模块?

如何在另一个模块中使用“GOPATH”之外的模块?

Go
翻翻过去那场雪 2023-04-04 14:47:10
我已经使用此命令“go mod init database”在“database”文件夹中的“GOPATH”之外创建了一个供个人使用的库,但我不知道:如何在另一个模块中使用/导入此模块?操作系统:Windows 7,Go:v1.11
查看完整描述

2 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

最简单且开箱即用的解决方案是将您的database包/模块放入 VCS(例如 github.com),因此其他包(在其他模块内)可以通过导入来简单地引用它,例如:

import "github.com/someone/database"

如果你这样做,你甚至不必go.mod手动摆弄文件,一切都将由 go 工具来处理:它会自动识别并解决这种依赖关系,下载并安装所需的包,并自动go.mod更新.

完全留在本地磁盘上

database在 之外创建了一个文件夹GOPATH,并在其中创建了一个模块。你创建了另一个模块,我们称它为main,你想使用这个database包。

你必须做的是:

  • go.mod您的main模块必须将database包列为“要求”。给你的database包一个临时的 VCS 名称:

    require (
        example.com/me/database v0.0.0)
  • 你必须告诉 go 工具这个包所在的位置,因为我们使用的完整包名只是一个临时/幻想的名字。使用replace指令使这个database包指向本地磁盘上的文件夹;您可以使用绝对路径和相对路径:

    replace example.com/me/database => ../database

就这样。

工作示例

让我们看一个工作示例。让我们创建一个pretty模块。创建一个pretty包含 2 个文件的文件夹:

漂亮去:

package pretty


import "fmt"


func Pretty(v ...interface{}) {

    fmt.Println(v...)

}

go.mod(可以通过运行创建go mod init pretty):


module pretty

现在让我们创建另一个主模块。让我们在文件夹osinf旁边创建一个文件夹(可以是任何文件夹)pretty。里面有2个文件:


osinf.go(注意我们打算使用我们的pretty包/模块,我们通过导入它"example.com/me/pretty"):


package main


import "example.com/me/pretty"


func main() {

    pretty.Pretty("hi")

    pretty.Pretty([]int{1, 3, 5})

}

去.mod:


module main


require example.com/me/pretty v0.0.0


replace example.com/me/pretty => ../pretty

就这样。


go run osinf.go在文件夹中运行osinf,输出为:


hi

[1 3 5]


查看完整回答
反对 回复 2023-04-04
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

跑步:


go mod init yellow

然后创建一个文件yellow.go:


package yellow


func Mix(s string) string {

   return s + "Yellow"

}

然后创建一个文件orange/orange.go:


package main

import "yellow"


func main() {

   s := yellow.Mix("Red")

   println(s)

}

然后构建:


go build

https://golang.org/doc/code.html


查看完整回答
反对 回复 2023-04-04
  • 2 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

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