【问题标题】:Local packages and directory structure本地包和目录结构
【发布时间】:2021-01-21 05:26:17
【问题描述】:

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

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

在 main.go 上可以正常工作:

进口( “我的包裹/我的包裹” )

但是当我创建一个新文件夹“examples”来测试包的一些新功能时, 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 modules and local packages 上读到过,也许我应该使用绝对路径来导入包,但我不喜欢这个选项,因为这是要加载到存储库的代码,所以绝对路径不起作用其他实现。

【问题讨论】:

标签: go import directory package


【解决方案1】:

根据stackoverflow masters的方法(它确实工作得很好)是导入一个假存储库,然后用How to use a module that is outside of "GOPATH" in another module?中所述的本地重定向替换它

在 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

有效!非常感谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 2013-07-11
    • 2015-11-08
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    相关资源
    最近更新 更多