gpt4 book ai didi

go - 在 go 模块中访问本地包(go 1.11)

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

我正在试用 Go 的新模块系统,但无法访问本地包。以下项目位于我的 gopath 之外的桌面上的一个文件夹中。

我的项目结构如下:

/
- /platform
- platform.go
- main.go
- go.mod

// platform.go
package platform

import "fmt"

func Print() {
fmt.Println("Hi")
}

// main.go
package main

import "platform"

func main() {
platform.Print()
}

go build main.go 告诉我

cannot find module for path platform

最佳答案

让我首先定义modulespackages 的集合。在 Go 11 中,我使用 go modules像下面这样:

如果两个包都在同一个项目中,您可以执行以下操作:在 go.mod 中:

模块 github.com/userName/moduleName

在你的 main.go

导入“github.com/userName/moduleName/platform”

但是,如果它们是单独的模块,即不同的物理路径,并且您仍想导入本地 packages 而不将其远程发布到 github,例如,您可以使用 replace 指令。

给定模块名称 github.com/otherModuleplatform,正如您所说的那样,它是其中唯一的包。在主模块的 go.mod 中添加以下行:

module github.com/userName/mainModule

require "github.com/userName/otherModule" v0.0.0
replace "github.com/userName/otherModule" v0.0.0 => "local physical path to the otherModule"

注意:路径要指向模块的根目录,可以是绝对的,也可以是相对的。

main.go 中,从 otherModule 导入特定的包,如 platform:

import "github.com/userName/otherModule/platform"

这是 gentle introduction转到 Golang 模块

关于go - 在 go 模块中访问本地包(go 1.11),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52026284/

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