📄go mod记录
2023-3-16
| 2023-4-10
0  |  0 分钟
type
status
date
slug
summary
tags
category
icon
password

1. 需求

A是主程序,依赖B、C、D等,其中B又依赖b,怎么利用go mod?举例:
demo1 ├──main.go ├──go.mod ├──get ├──DescribeProtectionModuleRules_int_dul2.go ├──go.mod ├──myenv ├──read_env.go
main.go调用get/DescribeProtectionModuleRules_int_dul2.go,而DescribeProtectionModuleRules_int_dul2.go调用myenv/read_env.go 当然,上面的目录结构有点神经病,毕竟正常的逻辑应该是下面这种:只有主程序有go.mod,demo1只是为了展示特殊用法。
demo2 ├──main.go ├──go.mod ├──get ├──DescribeProtectionModuleRules_int_dul2.go ├──myenv ├──read_env.go

2. 实现

基于demo1
简单点说就是,两个go包如果都有各自的go.mod,那他们是同级关系,可以利用module名和require/replace来设置一个虚拟的层级关系。如果只有一个包有go.mod,且目录关系就是包含,即某个包在另一个的子目录层级,那可以用import 主包名/次包名 来确定依赖。
replace 只在 main module 里面有。什么叫 main module? 打个比方,项目 A 的 module 用 replace 替换了本地文件,那么当项目 B 引用项目 A 后,项目 A 的 replace 会失效,此时对 replace 而言,项目 A 就是 main module
相关文章 :
技术
  • Go
  • go exporter模板git常用
    目录