gpt4 book ai didi

go - 如何在另一个模块中使用 "GOPATH"之外的模块?

转载 作者:行者123 更新时间:2023-12-01 22:24:56 25 4
gpt4 key购买 nike

我使用此命令“go mod init database”在“database”文件夹中的“GOPATH”之外创建了一个库作为供个人使用的模块,但我不知道:

  • 使用方法/进口 这个模块在另一个模块中?

  • 操作系统: window 7 , 转至: v1.11

    最佳答案

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

    import "github.com/someone/database"

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

    完全留在本地磁盘上

    如果您不想使用 VCS(例如,您只是在试验,或者您还没有决定使用什么),那么您仍然可以这样做。具体方法在官方 Go Wiki: Can I work entirely outside of VCS on my local filesystem?

    所以你创建了一个 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 个文件的文件夹:

    漂亮.go:
    package pretty

    import "fmt"

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

    去.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})
    }

    go.mod:
    module main

    require example.com/me/pretty v0.0.0

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

    就这样。

    运行 go run osinf.goosinf文件夹,输出为:
    hi
    [1 3 5]

    关于go - 如何在另一个模块中使用 "GOPATH"之外的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60581098/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com