首页 > 解决方案 > 本地包和目录结构

问题描述

这是我的 Go 项目的目录结构:

   my_project
   |
   main.go
   - my_package
       |
       - my_package.go

在 main.go 这工作正常:

导入(“my_package/my_package”)

但是当我创建一个新文件夹“examples”来测试包的一些新功能时,tha main.go 无法按预期导入包:

   my_project
   |
   main.go
   - my_package
       |
       - my_package.go
   - examples
       |
       - main.go

从父目录导入包:

导入(“../my_package/my_package”)

尝试运行 examples/main.go 不起作用:

cd examples
go run main.go
    build _/mypath/my_project/my_package: cannot find module for path _/mypath/my_project/my_package

我不应该从父目录导入本地包吗?

是否总是必须将包模块放在 main.go 的子文件夹中?

有没有简单明了的方法来组织 main/test/debug go 程序与本地包的共享依赖项?

我已经阅读了golang 模块和本地包,也许我应该使用绝对路径来导入包,但我不喜欢这个选项,因为这是一个要加载到存储库的代码,所以绝对路径不起作用其他实现。

标签: goimportdirectorypackage

解决方案


根据 stackoverflow masters 进行操作的方法(它确实工作得很好)是导入一个假存储库,然后用本地重定向替换它,如如何在另一个模块中使用“GOPATH”之外的模块?

在 main.go 中:

import (
        my_package "my_fake_repository/myself/my_project/my_package"
)

在 go.mod 中:

require my_fake_repository/myself/my_project/my_package v0.0.0
replace my_fake_repository/myself/my_project/my_package => ../my_package

有用!多谢!


推荐阅读