gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 13:04:09 28 4
gpt4 key购买 nike

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

  • 如何在另一个模块中使用/导入这个模块?

操作系统:Windows 7,Go: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?中有详细说明

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

你必须做的是:

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

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

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

仅此而已。

工作示例

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

pretty.go:

package pretty

import "fmt"

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

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

module pretty

现在让我们创建另一个主模块。让我们在 pretty 文件夹旁边创建一个文件夹 osinf (可以是任何东西)。里面有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

仅此而已。

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

hi
[1 3 5]

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

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