首页 > 其他分享 >go-work使用

go-work使用

时间:2023-06-10 17:01:32浏览次数:18  
标签:use work Module cast 使用 go Go

go work使用

(1.)初始化工作空间

go work init [moddirs]

说明:
moddirs是Go Module所在的本地目录。如果有多个Go Module,就用空格分开。如果go work init后面没有参数,会创建一个空的workspace。

执行go work init后会生成一个go.work文件,go.work里列出了该workspace需要用到的Go Module所在的目录,workspace目录不需要包含你当前正在开发的Go Module代码。
(2.)新增模块

go work use [-r] moddir

说明:
如果带有-r参数,会递归查找-r后面的路径参数下的所有子目录,把所有包含go.mod文件的子目录都添加到go work文件中。
如果某个Go Module的目录已经被加到go.work里了,后面该目录没有go.mod文件了或者该目录被删除了,那对该目录再次执行go work use命令,该目录的use指令会从go.work文件里自动移除。

use: 添加一个本地磁盘上的Go Module到workspace的主Module集合里。use后面的参数是go.mod文件所在目录相对于workspace目录的相对路径,例如use ./main。use指令不会添加指定目录的子目录下的Go Module到workspace的主Module集合里。
replace: 和go.mod里的 replace指令类似。go.work里的 replace指令可以替换某个Go Module的特定版本或者所有版本的内容。

实践案例

(1.) 总体的目录结构

├── go.work
├── mypkg
│   ├── go.mod
│   ├── go.sum
│   └── main.go
└── workmod
    └── cast
        ├── LICENSE
        ├── Makefile
        ├── README.md
        ├── cast.go
        ├── cast_test.go
        ├── caste.go
        ├── go.mod
        ├── go.sum
        └── timeformattype_string.go

(2.) mypkg包中代码
go.mod文件

module mypkg
 
go 1.18
 
require (
    github.com/davecgh/go-spew v1.1.1 // indirect
    github.com/spf13/cast v1.5.0 // indirect
)

main.go

package main
 
import (
    "github.com/davecgh/go-spew/spew"
    "github.com/spf13/cast"
)
 
func main() {
    spew.Dump("1")
    spew.Dump(cast.ToBool("1"))
 
}

(3.)workmod中的文件为下载的第三方包

git clone https://github.com/spf13/cast.git

(3.)在mypkg包外层进行初始化

go work init ./mypkg ./workmod/cast

go.work文件内容如下:
go 1.18

use (
	./work-demo
	./workmod/cast
)

# 执行完成后,生成go.work文件,该文件里通过use指令使用了mypkg和workmod/cast,可以在workmod/cast中修改文件,也可以debug调试,goland中,在External Libaries 中找到Go Workspace,双击Go Module 定位到对应的源文件,在源文件处打断点,即可调试,此时的源文件已经替换为我们在go.work中定义的文件了,而不是go.mod中的文件,go.work优先级高于go.mod

(4.)go work 其他命令
go help work

edit        edit go.work from tools or scripts
init        initialize workspace file
sync        sync workspace build list to modules
use         add modules to workspace file

标签:use,work,Module,cast,使用,go,Go
From: https://www.cnblogs.com/tomtellyou/p/17451233.html

相关文章

  • v4l2使用
    v4l2使用(1.)安装#ubuntusudoaptinstallv4l-utils#centossudodnfinstallv4l-utils#rpmsudorpm-iv4l-utils-1.16.7-4.el8.x86_64.rpm(2.)常用命令#列出设备v4l2-ctl--list-devices#列出某个设备支持的参数v4l2-ctl-d/dev/video0-l//dev/video0......
  • Mac 配置 用brew 配置mongodb 的配置
    安装参考这个 https://blog.csdn.net/qq_37268201/article/details/103962477修改Http类型和缓存https://zhuanlan.zhihu.com/p/474800808 方案一https://www.likecs.com/ask-586760.html 查看时,参考下面[email protected],whichmeansitwasnot......
  • Python+sklearn使用逻辑回归算法预测期末考试能否及格
    封面图片:《Python程序设计实验指导书》,董付国编著,清华大学出版社=================虽然名字中带有“回归”二字,但实际上逻辑回归是一个用于分类的线性模型,通常也称作最大熵分类或对数线性分类器。在该模型中,描述单个可能输出结果的概率通过一个逻辑函数进行建模。逻辑回归的因变量......
  • Java开发技巧-数据结构-使用HashSet判断主键是否存在、使用Pair成对结果返回/Triple三
    场景Java中使用HashSet判断主键是否存在HashSet实现Set接口,由哈希表(实际上是HashMap)实现,但不保证set的迭代顺序,并允许使用null元素。HashSet的时间复杂度跟HashMap一致,如果没有哈希冲突则时间复杂度为O(1),如果存在哈希冲突则时间复杂度不超过O(n)。所以,在日常编码中,可以使用HashSe......
  • Python+pandas使用交叉表分析超市营业额数据
    交叉表是一种特殊的透视表,往往用来统计频次,也可以使用参数aggfunc指定聚合函数实现其他功能。扩展库pandas提供了crosstab()函数用来生成交叉表,返回新的DataFrame,其语法为:crosstab(index,columns,values=None,rownames=None,colnames=None,aggfunc=None,margins=False,dropn......
  • Python+pandas使用重采样技术按时间段查看员工业绩
    如果DataFrame结构的索引是日期时间数据,或者包含日期时间数据列,可以使用resample()方法进行重采样,实现按时间段查看员工业绩的功能。DataFrame结构的resample()方法语法为:resample(rule,how=None,axis=0,fill_method=None,closed=None,label=None,convention='start',kind=N......
  • Python使用标准库itertools中count类求解数苹果问题
    问题描述:有一箱苹果,4个4个地数最后余下1个,5个5个地数最后余下2个,9个9个地数最后余下7个。编写程序计算这箱苹果至少有多少个。解题思路:先确定除以9余7的最小整数,对这个数字重复加9,如果得到的数字除以5余2就停止;然后对得到的数字重复加45,如果得到的数字......
  • Python数据分析库pandas高级接口dt和str的使用
    Series对象和DataFrame的列数据提供了cat、dt、str三种属性接口(accessors),分别对应分类数据、日期时间数据和字符串数据,通过这几个接口可以快速实现特定的功能,非常快捷。本文重点介绍和演示dt和str的用法。DataFrame数据中的日期时间列支持dt接口,该接口提供了dayofweek、dayofyear、......
  • Python多进程使用队列共享数据协同判断素数
    感谢江西师范大学李雪斌老师提供素材和第一版本代码。问题描述:创建两个队列,qIn用来存储指定范围内的整数,qOut用来存放该范围内的所有素数。创建多个进程,每个进程依次从qIn队列中获取整数,并判断是否为素数,如果是素数则存入qOut。技术要点:1)使用Python标准库multiprocessing创建和管理......
  • STM32使用寄存器实现点灯操作
    1.配置RCC_APB2ENR(见参考手册7.3.7)2.配置GPIOC_CRH(见参考手册8.2.2)3.配置GPIOC_ODR(见参考手册8.2.4) #include"stm32f10x.h"//Deviceheaderintmain(void){ RCC->APB2ENR=0x00000010; GPIOC->CRH=0x00300000; GPIOC->ODR=0x0000000......