(3)Golang导入本地包
gomodule是Go1。11版本之后官方推出的版本管理工具,并且从Go1。13版本开始,gomodule将是Go语言默认的依赖管理工具。到今天Go1。14版本推出之后Gomodules功能已经被正式推荐在生产环境下使用了。
这几天已经有很多教程讲解如何使用gomodule,以及如何使用gomodule导入gitlab私有仓库,我这里就不再啰嗦了。但是最近我发现很多小伙伴在群里问如何使用gomodule导入本地包,作为初学者大家刚开始接触package的时候肯定都是先在本地创建一个包,然后本地调用一下,然后就被卡住了
这里就详细介绍下如何使用gomodule导入本地包。
gomod用法:初始化模块gomodinit项目模块名称依赖关系处理,根据go。mod文件gomodtidy将依赖包复制到项目下的vendor目录。gomodvendor如果包被屏蔽(墙),可以使用这个命令,随后使用gobuildmodvendor编译显示依赖关系golistmall显示详细依赖关系golistmjsonall下载依赖gomoddownload〔pathversion〕〔pathversion〕是非必写的一、前言
假设我们现在有moduledemo和mypackage两个包,其中moduledemo包中会导入mypackage包并使用它的New方法。
mypackagemypackage。go内容如下:packagemypackageimportfmtfuncNew(){fmt。Println(mypackage。New)}
现在我们分两种情况讨论:1。1在同一个项目下
注意:在一个项目(project)下我们是可以定义多个包(packaage)的。
目录结构
现在的情况是,我们在moduledemomain。go中调用了mypackage这个包。
moduledemo
go。mod
main。go
mypackage
mypackage。go
导入包
这个时候,我们需要在moduledemogo。mod中按如下定义:
modulemoduledemo
go1。14
然后在moduledemomain。go中按如下方式导入mypackagepackagemainimport(fmtmoduledemomypackage导入同一项目下的mypackage包)funcmain(){mypackage。New()fmt。Println(main)}
举个例子
举一反三,假设我们现在有文件目录结构如下:
bubble
dao
mysql。go
go。mod
main。go
其中bubblego。mod内容如下:modulegithub。comq1mibubblego1。14bubbledaomysql。go内容如下:packagedaoimportfmtfuncNew(){fmt。Println(mypackage。New)}
bubblemain。go内容如下:packagemainimport(fmtgithub。comq1mibubbledao)funcmain(){dao。New()fmt。Println(main)}1。2不在同一个目录下
目录结构
moduledemo
go。mod
main。go
mypackage
go。mod
mypackage。go
导入包
这个时候,mypackage也需要进行module初始化,即拥有一个属于自己的go。mod文件,内容如下:modulemypackagego1。14
然后我们在moduledemomain。go中按如下方式导入:import(fmtmypackage)funcmain(){mypackage。New()fmt。Println(main)}
因为这两个包不在同一个项目路径下,你想要导入本地包,并且这些包也没有发布到远程的github或其他代码仓库地址。这个时候我们就需要在go。mod文件中使用replace指令。
在调用方也就是moduledemogo。mod中按如下方式指定使用相对路径来寻找mypackage这个包。modulemoduledemogo1。14requiremypackagev0。0。0replacemypackage。。mypackage
举个例子
最后我们再举个例子巩固下上面的内容。
我们现在有文件目录结构如下:
p1
go。mod
main。go
p2
go。mod
p2。go
p1main。go中想要导入p2。go中定义的函数。
p2go。mod内容如下:moduleliwenzhou。comq1mip2go1。14p1main。go中按如下方式导入import(fmtliwenzhou。comq1mip2)funcmain(){p2。New()fmt。Println(main)}
因为我并没有把liwenzhou。comq1mip2这个包上传到liwenzhou。com这个网站,我们只是想导入本地的包,这个时候就需要用到replace这个指令了。
p1go。mod内容如下:modulegithub。comq1mip1go1。14requireliwenzhou。comq1mip2v0。0。0replaceliwenzhou。comq1mip2。。p2BASH复制全屏
此时,我们就可以正常编译p1这个项目了。
说再多也没用,自己动手试试吧。
定了!六合这5家景区限时免费开放!好消息日前市发改委公布了2023年度南京市实行政府指导价管理景区免费开放日的通知六合有5家景区限时免费哦先带你一图看完所有免费开放景点六合国家地质公园瓜埠山景区免费时间5月14日六
广西180家A级景区门票五折优惠激发桂津两地新春文旅消费市场11日上午,广西跨省旅游对接会在天津成功举办。王在御摄中新网天津1月11日电(王在御)11日上午,由广西壮族自治区文化和旅游厅主办广西旅游协会承办的山水暖你壮乡等你2023开年游广
手慢无!北京又有一批消费券正在发放!覆盖热门景区冰雪乐园餐饮住宿随着寒假春节假期来临北京多区纷纷拿出真金白银向市民发放千万百万元消费券覆盖了吃喝玩购住各个方面什么时间领,去哪领看这里房山区房山区送百万文旅消费券啦。消费券将涵盖房山冬季旅游各行业
一场冬季,一场梦冬天喜欢躲在温暖的地方或是喜欢柔软舒适的棉花有温暖的房间有温暖物品冬天会让人很快安静下来没有夏天那般活泼且好动是能够安静的捧起一本书是能够踏实的进入一场梦是能够很有定力待在一处像是
这个冬季来楚雄约一场康养之旅走进楚雄仿佛走进一幅山清水秀的天然画卷让人流连其中,乐而忘返今年冬天来这里约一场康养之旅吧明媚阳光为你驱散寒冷清新空气唤醒你的深呼吸美景美食让你的旅途充满惊喜楚雄年均日照为2450
玩转冬季阿勒泰!大喀小程序操作指南来了!最近总能看到粉丝留言说怎么买雪票有没有住滑套餐泰滑卡在哪里购买今天为大家隆重介绍大喀小程序点开这个小程序你将度过一个有趣的冬季雪场信息雪票入住酒店旅游景区门票自驾租车全给你安排到位
丰顺县留隍镇以乡贤模式绘就乡村振兴同心圆青山绿水间,丰顺留隍镇温泉度假村水汽氤氲,刚修缮的留隍镇骑楼古街,尽显千年古镇的古韵新貌,迎来各地慕名前来的游客。目前,留隍镇骑楼古街修缮一期工程全面完工,总投资1800万元,由丰
来宣威看看曾经的火车咋就没得汽车快周末的闲暇时光,约了几个好友,步入宣威乐丰乡境内,沿老贵昆铁路线上的木戛车站遗址顺着原铁路线的走向,步行到原背开柱车站遗址,身临其境,被当年的铁道兵精神深深折服。曾经的老贵昆铁路进
韩国为何执着于做跳梁小丑来自中国的游客自中国放开疫情管控之后,国人的出境游比例逐渐攀升,许多人更是打算借着新年假期之际,来一场异国他乡之旅。其中亚洲国家受到广大中国游客的青睐,日本韩国泰国等国是中国游客的
断舍离8周计划!2023兔年清空不必要的,把人生留给真正重要的冬日生活打卡季你的生活,是不是太复杂了?清空不必要的,才有时间留给真正想要的。新的一年,尝试断舍离吧!断舍离8周计划!2023新年清空不必要的,把人生留给真正重要的!五分钟阅读所谓
汝州市2023年春灯节文旅活动安排为了营造欢乐祥和喜庆的节日气氛,活跃群众精神文化生活,传承民间文化艺术,2023年春灯节期间,我市推出租个小院过大年冰雪温泉乡村精品线路和优惠政策,全市A级景区乡村旅游村温泉和星级