Golang 1.18 Workspace的使用
Golang 1.18版本发布以后,大家更多都在关注泛型,但实际上有一个可能更加有用的新功能却被大家忽略了,那就是Workspace,国内大家都习惯于称之为工作区,先来看看它能为我们带来什么帮助。
在Workspace出现之前,我们主要是使用go module来定义一个模块,如果需要引入其他模块,最常使用的的方式是通过go get或者go mod tidy的方式来引入我们的模块。但是,始终这种方式存在一些问题,首先,这样引入的其他模块是只读的,我们没有办法直接修改代码;其次,这样的方式导致每当修改被引用的模块时,都需要修改引用该模块的项目的依赖版本,这会造成很大的工作量,尤其对于某个被引用模块是我们自己定义的,而且仅在某些固定模块中引用时,这种繁杂的工作会更加多。Workspace很好的解决了这个问题,我们先来看一个使用Workspace的例子。
首先,创建一个目录utils,然后执行命令,创建一个utils的模块
go mod init utils
之后编写代码
-
package utils
-
-
import "fmt"
-
-
func PrintHello(what string) {
-
fmt.Println("Hello", what)
-
}
在这个包里有一个函数,打印Hello
现在,在utils的平级目录下,创建一个main目录,创建test模块
go mod init test
再写一段代码
-
package main
-
-
import "utils"
-
-
func main() {
-
utils.PrintHello("World")
-
}
这里大家就该奇怪了,这里import一个utils,编译不通过吧。的确,目前这样是会出现问题的,接下来就是Workspace发挥作用的时候了,先重新回到utils和main目录的父目录,执行下面的命令
go work init main
执行完命令,就会在该目录下生成一个go.work文件,我们已经初始化了一个Workspace,打开看一下,内容如下,此时该Workspace下只有一个./main目录下的模块
-
go 1.19
-
-
use (
-
./main
-
)
再执行命令
go work use utils
此时,go.work文件内容如下
-
go 1.19
-
-
use (
-
./main
-
./utils
-
)
也就是说现在main和utils已经归属于同一个Workspace了,现在再回去看一下之前的main.go文件,此时已经不会报错了。所以Workspace可以将多个模块归入到一个Workspace下,尤其是模块之间强依赖而且有随时调整依赖模块的需要时,这样工作会更加方便。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfhkkga
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01