当前位置: 首页 > 面试题库 >

如何在GoPATH外部使用单片仓库结构在Go语言的Go 1.11+中共享本地模块

亢建白
2023-03-14
问题内容

我已使用以下命令“ go mod init database”在“数据库”文件夹中的“ GOPATH”之外创建了个人使用的模块库,但我不知道:

  • 如何在其他模块中使用/ 导入 该模块?

操作系统: Windows 7 ,Go: v1.11


问题答案:

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

import "github.com/someone/database"

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

完全保留在本地磁盘上

如果您不想使用VCS(例如,您只是在试验,或者尚未决定使用什么),那么仍然可以使用。该 如何
在官方详细的我能完全工作外VCS在我的本地文件系统中:转到维基?

因此,您在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个文件的文件夹:

pretty.go:

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

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]


 类似资料:
  • 主要内容:使用命令行查看GOPATH信息,使用GOPATH的工程结构,设置和使用GOPATH,在多项目工程中使用GOPATHGOPATH 是 Go语言中使用的一个环境变量,它使用绝对路径提供项目的工作目录。 工作目录是一个工程开发的相对参考目录,好比当你要在公司编写一套服务器代码,你的工位所包含的桌面、计算机及椅子就是你的工作区。工作区的概念与工作目录的概念也是类似的。如果不使用工作目录的概念,在多人开发时,每个人有一套自己的目录结构,读取配置文件的位置不统一,输出的二进制运行文件也不统一,这样

  • 问题内容: 我的一个项目有一个问题。 我一直在尝试找到一个记录良好的使用共享内存的示例,但没有成功。 基本上情况是,当用户启动程序时,我需要在共享内存中存储两个值: current_path( 它是一个 char )_ 和 file_name( 它也是 _char ) 。 根据命令参数,将启动一个新进程,该进程需要读取和修改存储在共享内存中的 current_path 变量,而 file_name

  • 问题内容: 我有一个.so文件,我想在我的Go代码中调用其功能。 我该怎么做呢?我已经阅读了cgo和syscall软件包。它们接近我想要的位置,但是我看不到可以在.so文件中调用函数的任何地方。 我想确切地实现ctypes包在Python中的功能。 有人可以帮忙吗? 问题答案: 如果要使用在编译时静态已知的共享库,则可以简单地使用cgo。阅读有关如何准确执行此操作的文档,但是通常您会指定一些链接器

  • 在我们开始学习 Go 编程语言的基础构建模块前,让我们先来了解 Go 语言最简单程序的结构。 Go Hello World 实例 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 & 表达式 注释 接下来让我们来看下简单的代码,该代码输出了"Hello World!": package main import "fmt" func main() { /* 这是我的

  • 问题内容: 我已使用以下命令“ go mod init database”在“数据库”文件夹中的“ GOPATH”之外创建了个人使用的模块库,但我不知道: 如何在其他模块中使用/ 导入 该模块? 操作系统: Windows 7 ,Go: v1.11 问题答案: 最简单,可行的现成解决方案是将您的包/模块放入VCS(例如github.com),因此其他包(在其他模块内部)可以通过导入来简单地引用它:

  • 问题内容: 是否可以使用Go创建共享库(.so)? 更新 :为此创建了一个“ 问题 ”。 问题答案: 现在可以使用标志 您需要做的是首先运行以下命令: (以上代码使所有通用软件包都可共享!)然后 最后,在编译代码时,您需要运行: 上面这些就是什么,而不是静态链接所有内容而仅动态链接它们,您最终将获得更小的编译文件。为了让您了解我的带有静态链接的“ hello.go”文件为2.3MB,而使用动态链接