当前位置: 首页 > news >正文

go 工作区(workspace)模式

使用go写一个处理数学运算的小通用包

go.mod文件如下

module gitee.com/demo_go/utils_mathgo 1.25.3

utilsmath.go 文件内容如下

package utilsmathimport "fmt"func AddInt(a, b int) int {fmt.Printf("utilsmath 内部方法 AddInt %d + %d", a, b)return a + b
}

这里有几个地方,需要注意

  1. 使用mod声明的时候,不需要带上 .git 后缀(如果无脑从git上复制地址,会把.git 一起复制上)
  • 不规范声明: go mod init gitee.com:demo_go/utils_math.git
  • 正确 声明: go mod init gitee.com:demo_go/utils_math
  1. package名称应该和 mod名称一致,避免歧义,比如上面的
package utilsmath
改为 
package utils_math

如果不改,在其他工具引用时,就会导致如下样式

package mainimport ("fmt"// 这要起别名才行,看起来很麻烦utilsmath "gitee.com/demo_go/utils_math"
)func main() {b := utilsmath.AddInt(1, 2)fmt.Println("------------------------")fmt.Println(b)
}

go work 使用

上面的例子,最终目录结构如下

.
├── student
│   ├── go.mod
│   ├── go.sum
│   └── main.go
└── utils_math├── go.mod└── main.go

在使用utils_math工具包的时候,我们发现如下问题。
image
这时候,就有个问题,在 student 这个项目中,引用的 utils_math,如果改代码,改完以后,必须要

  1. 在 utils_math 改完
  2. 将 utils_math 最新的改动,推送到 git 上去
  3. 在 student 项目中,拉取最新代码

如果在调试过程中,这么搞,就很繁琐,而且,你改的也不一定对,这时候,就可以考虑使用 go work 了。

使用 go work 托管

返回到 utilsstudent 两个共用的父级目录,执行如下命令

go work init ./student ./utils_math

go work init 后面跟的是 go.mod 文件所在的路径,最终目录结构如下:

.
├── go.work
├── student
│   ├── go.mod
│   ├── go.sum
│   └── main.go
└── utils_math├── go.mod└── main.go

此时,再在 student 项目中运行 go run main.go,就是直接引用的 utils_math 项目中的代码了,此次 student 中的 go.mod等代码,都没有变化

原理

  1. 检测到当前目录或父目录中存在 go.work;

  2. 自动将 use 中列出的模块都纳入编译视图;

  3. 如果 A 的 import 引用了 example.com/B,Go 会优先在 workspace 中查找是否存在该模块;

  4. 发现 B 模块在 use ./B 中,于是直接使用本地路径;

  5. 不再去下载远程依赖,也不修改 go.mod。

http://www.rkmt.cn/news/43919.html

相关文章:

  • 2025年搓管机全套管实力厂家权威推荐榜单:旋挖全套管/全回转钻机全套管/全回转全套管源头厂家精选
  • 2025广州人力资源服务推荐榜:精典人才领衔,派遣/外包靠谱公司精选3家
  • 51汇编--外部中断
  • 51汇编--AD和DA
  • 2025年杭州工厂外贸代运营公司权威推荐榜单:海外社媒推广/海外社媒营销/外贸推广源头公司精选
  • 51汇编--数码管显示
  • 51汇编--串口通信
  • 新定义RD8T36P48点亮LED--汇编
  • qsl 2
  • 实用指南:东方仙盟修仙(五)赛博科技修仙养老是一种爱好
  • node项目架构
  • 改善睡眠设备哪家专业:2025年最新排行
  • 2025年改善睡眠设备专业推荐排行榜:科技助力健康生活
  • 锂电池充电管理IC 内置快充协议的升降压充电管理芯片
  • WizTree去右上角抖动图标donate
  • 本年度矿物干燥剂生产厂家如何选择
  • 2025年悬挑楼梯公司推荐榜:Top5厂家全面评测与选择攻略
  • 2025年积分球生产厂家评测:顶尖技术引领光学测量新时代
  • 2025山东济南艺考文化课机构推荐榜:震华学校五星领衔,3 所优质学校助力艺考生文化课突围
  • TENGJUN-3.5MM耳机插座(JA06-BPF032-A):反向沉板结构下的4极音频连接解决方案 - 教程
  • 2025媒体邀约公司、深圳媒体推广公司、深圳软文推广公司推荐榜:媒介易领衔,中小规模企业凭实力上榜
  • 2025年11月钢管厂家最新推荐榜:实力企业凭技术与口碑脱颖而出
  • VS Code Background插件使用方法
  • 0CTF_babyheap
  • 重生之我在大学自学鸿蒙开发第二天-《MVVM模式》 - 教程
  • 禁止输入法联网_批量禁止指定目录下的程序联网
  • 虚幻引擎5 GAS制作俯视角RPG游戏 P05-05 游戏效果委托
  • 2025年口碑好的GEO(AI搜索优)服务商解析与推荐
  • 2025年手机壳厂家革新包装技术:离心式包装机深度解析
  • 2025年广州工商注册公司权威推荐榜单:税务股权架构方案/工商变更/工商注销源头公司精选