GoLang之工作区模式

GoLang之工作区模式

注:本文是以Go SDK v1.18进行讲解

1.创建总目录

image-20220319151020555

image-20220319151032688

2.创建mypkg项目

创建mypkg项目

image-20220319151145658

删除go.mod文件

在mypkg项目下创建bar.go文件

package mypkg

func Bar() {
	println("This is package mypkg")
}

image-20220319153729673

输入以下,为咱的模块起个名字(注:这只是起名字,并不是上传到网上)

go mod init github.com/polaris1119/mypkg

在这里插入图片描述
在这里插入图片描述

3.创建example项目

创建example项目

image-20220319151714526

删除go.mod文件

在example项目下创建main.go文件

package main

import (
    "github.com/polaris1119/mypkg"
)

func main() {
    mypkg.Bar()

image-20220319154405395

输入以下,为咱的模块起个名字(注:这只是起名字,并不是上传到网上)

go mod init github.com/polaris1119/example

这时候,如果我们运行 go mod tidy,肯定会报错,因为我们的 mypkg 包根本没有提交到 github 上,肯定找不到;

go run main.go 也就不成功。

image-20220319154814412

解决方案一:

我们可以提交 mypkg 到 github,但我们每修改一次 mypkg,就需要提交,否则 example 中就没法使用上最新的;

解决方案二:

通过 replace 来解决,通过 replace 间接的引用到mypkg,即在 example 中的 go.mod 增加如下 replace,main.go

成功引用到本地的mypkg,main.go不再爆红。缺点是:当都开发完成时,我们需要手动删除 replace,并执行 go mod tidy 后提交,否则别人使用就报错了,这还是挺不方便的,如果本地有多个 module,每一个都得这么处理;

module github.com/polaris1119/example

go 1.18

require github.com/polaris1119/mypkg v1.0.0

replace github.com/polaris1119/mypkg => ../mypkg

image-20220319155513302

image-20220319155533924

image-20220319155641301

4.工作区模式

解决方案三:

Workspace Mode

针对上面的这个问题,Michael Matloob 提出了 Workspace Mode(工作区模式)

在 polarisxu 目录执行如下,go work init之后跟上需要本地开发的子模块目录名

go work init ./mypkg ./example

注:建议多个子模块应该在一个目录下,比如这两个子模块都放在 polarisxu 目录下;(这不是必须的,但更好管理,否则 go work init 需要提供正确的子模块路径)
注:如果之后有别的子模块需要加入工作模式的话,使用“go work use 项目目录”这个命令,例如“go work use ./hello”

image-20220319160313181

image-20220319160511297

image-20220319160529806

现在,我们将 example/go.mod 中的 replace 语句删除,再次执行 go run main.go(在 example 目录下),得到了正常的输出。也可以在 polarisxu 目录下,这么运行:go run example/main.go,也能正常。

注意,go.work 不需要提交到 Git 中,因为它只是你本地开发使用的

虽然爆红却能运行

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GoGo在努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值