gpt4 book ai didi

在 repo 中使用多个模块时,Go get 找不到本地包

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

我在使用 go 的新模块系统时遇到问题,因为我想定义一个本地模块并将其导入到主程序中。本地包位于主包/根文件夹的文件夹中。想象一下 $GOPATH 之外的以下项目结构。

项目结构

./main.go

package main

import "fmt"
import "example.com/localModule/model"

func main() {
var p = model.Person{name: "Dieter", age:25}
fmt.Printf("Hello %s\n", p.name)
}

./model/person.go

package model

type Person struct {
name string
age int
}

在根文件夹中,我通过调用初始化了一个模块

go mod init example.com/localModule

model/ 文件夹中,我通过调用初始化子模块

go mod init example.com/localModule/model

错误

在根文件夹中调用以下命令失败。

$ go get
go build example.com/localModule/model: no Go files in

$ go build
main.go:4:8: unknown import path "example.com/localModule/model": cannot find module providing package example.com/localModule/model

go get的错误信息被截断了,我没有解析错。

我不打算将模块推送到服务器,只是需要一种引用本地包 model 的方法,所以我选择了 example.com/localModule/example.com/localModule/model 分别。

我在运行 MacOS 10.13.6 的 Macbook 上使用 go1.11 darwin/amd64

最佳答案

您可以通过在 go.mod 中添加 require 语句和匹配的带有相对文件路径的替换语句来获得所需的本地“子”模块。

在“根”./go.mod:

module example.com/localModule

require example.com/localModule/model v0.0.0

replace example.com/localModule/model v0.0.0 => ./model

关于在 repo 中使用多个模块时,Go get 找不到本地包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52079662/

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