跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 关于 Go 的 Module 包管理
未分類
24 11 月 2020

关于 Go 的 Module 包管理

关于 Go 的 Module 包管理

資深大佬 : iFurySt 5

. ├── conf │   ├── dev.ini │   └── prod.ini ├── controller │   ├── dir.go │   ├── go.mod │   └── go.sum ├── docs ├── go.mod ├── go.sum ├── main.go ├── pkg │   ├── config │   │   ├── config.go │   │   ├── go.mod │   │   └── go.sum │   ├── ecode │   │   ├── code.go │   │   ├── ecode.go │   │   ├── go.mod │   │   └── msg.go │   ├── os │   │   ├── go.mod │   │   └── path.go │   └── response │       ├── go.mod │       ├── go.sum │       └── response.go ├── routers │   ├── go.mod │   ├── go.sum │   └── routers.go 

一个测试项目的目录,有一些问题想要请教一下:

  1. 比如我在controller/dir.go中引入example.com/os,那么在controller/go.mod中需要指明replace example.com/os => ../pkg/os,相应的如果该项目的很多包就需要 replace 多次。
  2. 基于1,现在在main.go中引入example.com/controller包,则在go.mod不仅仅需要replace example.com/controller => ./controller,还需要replace example.com/os => ./pkg/os,一旦controller引入了多个,在此也需要引入多个包,感觉很麻烦,总感觉自己的姿势不对,但是查阅了资料除了将项目移到$GOPATH/src/或者使用$GOPATH以外,只能将代码上传到类似github.com的仓库上然后直接go get?

刚接触 Go,包管理问题确实有被困扰到,想要探究一下究竟是怎么回事 🙂

大佬有話說 (6)

  • 資深大佬 : bbao

    你只需要引用 go.mod 文件里面 module 的命名就行,该包下面的除了 internal 的内容,就都可以引用 了

  • 資深大佬 : bbao

    A go.mod
    module git.github.com/business/server

    B go.mod
    module git.github.com/example/server

    replace git.github.com/example/server => /project/path

  • 主 資深大佬 : iFurySt

    “`
    .
    ├── conf
    │   ├── dev.ini
    │   └── prod.ini
    ├── controller
    │   └── dir.go
    ├── docs
    ├── go.mod
    ├── go.sum
    ├── main.go
    ├── pkg
    │   ├── config
    │   │   └── config.go
    │   ├── ecode
    │   │   ├── code.go
    │   │   ├── ecode.go
    │   │   └── msg.go
    │   ├── os
    │   │   └── path.go
    │   └── response
    │   └── response.go
    ├── routers
    │   └── routers.go
    “`
    刚刚尝试了一下,有一个自我认为比较方便的解决办法,`go.mod`中声明为`module example.com/demo`,然后删掉所有子目录里的`go.mod`,现在不管是在哪里使用,只需要使用诸如`import “example.com/demo/os”`,`import “example.com/demo/pkg/config”`这样就很便捷了。希望得到其他人的建议,我再综合一下

  • 資深大佬 : AmrtaShiva

    go mod 的本地引用确实挺蛋疼的 目前用的就是 replace 很不方便

  • 資深大佬 : axex

    @iFurySt 这才是正确的做法,go mod 是可以直接引用本地的 pkg

  • 資深大佬 : sxfscool

    为啥每个文件夹下都要建 go.mod, 把能公用的提出来就行了,不能公用没必要建 go.mod

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具