当前位置:首页 > 科技  > 软件

又有新功能!Go 将有生成新模板的 gonew 工具链

来源: 责编: 时间:2023-08-14 22:01:35 522观看
导读大家好,我是煎鱼。不知道大家平时在日常工作中,会不会遇到一个问题?公司用着微服务架构,经常要创建新的服务,需要一个应用模板去初始化新的服务,减少 ctrl+c+v,转为相对自动化。不同团队根据 Leader 的喜好、要求不同,应用模

大家好,我是煎鱼。psI28资讯网——每日最新资讯28at.com

不知道大家平时在日常工作中,会不会遇到一个问题?公司用着微服务架构,经常要创建新的服务,需要一个应用模板去初始化新的服务,减少 ctrl+c+v,转为相对自动化。psI28资讯网——每日最新资讯28at.com

不同团队根据 Leader 的喜好、要求不同,应用模板又会不同。有的喜欢 DDD、有的喜欢 MVC、有的大道至简即可。每家公司都会延伸出一个工具链做这个事情。psI28资讯网——每日最新资讯28at.com

新工具:gonew 生成模板

在 Go 社区也出现了这种诉求,Go 核心团队带头大哥 @Russ Cox 发起了一个新讨论《gonew: templates for new modules[1]》,引发了各方的热议:psI28资讯网——每日最新资讯28at.com

图片图片psI28资讯网——每日最新资讯28at.com

原因是:Go 团队经常收到用户反馈要求使用某种 "go new" 功能,以某种基本模板启动一个新的模块(项目)。psI28资讯网——每日最新资讯28at.com

这个工具不局限于 Go 团队提供的模板,任何人都可以定义这个模板。这个模板也是很 “普通”,没什么特殊的功能。psI28资讯网——每日最新资讯28at.com

"go new" 的核心工作是下载一个模板,更改其模块路径,然后把它放到一个新的目录中进行编辑。当然这个工具链未来可能还有更多的功能,但这就是最核心的诉求。psI28资讯网——每日最新资讯28at.com

也出现了一个新的场景。有一名图书作者,希望能够更方便的提供图书示例,不想要图书读者费尽心思克隆一个 git 仓库。答案显而易见,那就是本文提到的 gonew 工具。psI28资讯网——每日最新资讯28at.com

快速体验和实操

结合前后事迹来看,@Russ Cox 是一个执行效率比较高的人。提出讨论的前几个月,已经写好了工具给大家试用了。psI28资讯网——每日最新资讯28at.com

安装命令如下:psI28资讯网——每日最新资讯28at.com

$ go install golang.org/x/tools/cmd/gonew@latestgo: downloading golang.org/x/tools v0.11.1go: downloading golang.org/x/mod v0.12.0

创建命令如下:psI28资讯网——每日最新资讯28at.com

$ gonew golang.org/x/example/hellogonew: initialized golang.org/x/example/hello in ./hello

执行完毕后,会在当前目录下,创建一个 hello 目录(./hello)。模板的结构如下:psI28资讯网——每日最新资讯28at.com

$ tree hello hello├── LICENSE├── go.mod├── hello.go└── reverse    ├── example_test.go    ├── reverse.go    └── reverse_test.go1 directory, 6 files

我对比了一下,和模板基准的 git 仓库 github.com/golang/example 的相关代码是一致的。psI28资讯网——每日最新资讯28at.com

可能会有同学说,不行啊。我还要改 module path。这点在现在也是已经支持的了。psI28资讯网——每日最新资讯28at.com

如下命令:psI28资讯网——每日最新资讯28at.com

$ gonew github.com/ServiceWeaver/template example.com/foogonew: initialized example.com/foo in ./foo

生成目录:psI28资讯网——每日最新资讯28at.com

$ tree foofoo├── LICENSE├── README.md├── go.mod├── go.sum├── main.go├── weaver.toml└── weaver_gen.go

对应生成的目录名是指定的 foo,创建出来的 go.mod 文件的 module path 是:module example.com/foo。psI28资讯网——每日最新资讯28at.com

符合上面提的要求。psI28资讯网——每日最新资讯28at.com

一些讨论

结合讨论的内容来看,大家的反馈都是比较积极支持的。因为确实看到社区里很多人为此做了一模一样的事情,各语言都有,真的是各显神通了。psI28资讯网——每日最新资讯28at.com

图片图片psI28资讯网——每日最新资讯28at.com

有个别同学支持将本文提到的 go new 放到 go mod init 中,这样就不需要再单独创造一个新的命令集。psI28资讯网——每日最新资讯28at.com

提出的同学认为 go mod init 本质上也是在引导 Go 应用的使用,和 go new 比较类似。可以调整为:psI28资讯网——每日最新资讯28at.com

go mod init example.com/x/abc --template github.com/ServiceWeaver/template

以此满足一样的诉求。psI28资讯网——每日最新资讯28at.com

不过我感觉这命令就太长了,没 go new 那么短小精悍。psI28资讯网——每日最新资讯28at.com

总结

本次 go new 工具的讨论和实验,Go 团队非常迅速。目测势在必得,肯定会加进去了。psI28资讯网——每日最新资讯28at.com

因为根据反馈 Google 的几个团队也有兴趣尝试使用 gonew 进行模板化。ServiceWeaver 团队对此也非常感兴趣。psI28资讯网——每日最新资讯28at.com

功能虽然非常简单,但基本满足了不同的团队为了不同的代码模板,创建一个新的模板的诉求。一旦成熟,也就不需要人均手搓一个模板的脚手架工具了。psI28资讯网——每日最新资讯28at.com

后续各自在工具链套一下就 OK,一个快速的小成果就好了。推荐大家试用,又或是觉得还需要什么功能补充,也欢迎随时留言。psI28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-5748-0.html又有新功能!Go 将有生成新模板的 gonew 工具链

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 不要错过这个机会:学习Java 8 Stream,提升编码能力!

下一篇: TIOBE 8 月编程语言排行榜:Python 登顶,C / C++ 包揽第二第三

标签:
  • 热门焦点
  • 一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    终于,在经过了几波预热之后,一加Ace2 Pro的外观真机图在网上出现了。还是博主数码闲聊站曝光的,这次的外观设计还是延续了一加11的方案,只是细节上有了调整,例如新加入了钛空灰
  • 5月iOS设备性能榜:M1 M2依旧是榜单前五

    和上个月一样,没有新品发布的iOS设备性能榜的上榜设备并没有什么更替,仅仅只有跑分变化而产生的排名变动,刚刚开始的苹果WWDC2023,推出的产品也依旧是新款Mac Pro、新款Mac Stu
  • 5月iOS设备好评榜:iPhone 14仅排第43?

    来到新的一月,安兔兔的各个榜单又重新汇总了数据,像安卓阵营的榜单都有着比较大的变动,不过iOS由于设备的更新换代并没有那么快,所以相对来说变化并不大,特别是iOS好评榜,老款设
  • JavaScript 混淆及反混淆代码工具

    介绍在我们开始学习反混淆之前,我们首先要了解一下代码混淆。如果不了解代码是如何混淆的,我们可能无法成功对代码进行反混淆,尤其是使用自定义混淆器对其进行混淆时。什么是混
  • Python异步IO编程的进程/线程通信实现

    这篇文章再讲3种方式,同时讲4中进程间通信的方式一、 Python 中线程间通信的实现方式共享变量共享变量是多个线程可以共同访问的变量。在Python中,可以使用threading模块中的L
  • 签约井川里予、何丹彤,单视频点赞近千万,MCN黑马永恒文希快速崛起!

    来源:视听观察永恒文希传媒作为一家MCN公司,说起它的名字来,可能大家会觉得有点儿陌生,但是说出来下面一串的名字之后,或许大家就会感到震惊,原来这么多网红,都签约这家公司了。根
  • 8月见!小米MIX Fold 3获得3C认证:支持67W快充

    这段时间以来,包括三星、一加、荣耀等等有不少品牌旗下的最新折叠屏旗舰都得到了不少爆料,而小米新一代折叠屏旗舰——小米MIX Fold 3此前也屡屡被传
  • 与兆芯合作 联想推出全新旗舰版笔记本电脑开天N7系列

    联想与兆芯合作推出全新联想旗舰版笔记本电脑开天 N7系列。这个系列采用兆芯KX-6640MA处理器平台,KX-6640MA 处理器是采用了陆家嘴架构,16nm 工艺,4 核 4 线
  • 荣耀Magic4 至臻版 首创智慧隐私通话 强劲影音系统

    2022年第一季度临近尾声,在该季度内,许多品牌陆续发布自己的最新产品,让大家从全新的角度来了解当今的手机技术。手机是电子设备中,更新迭代十分迅速的一款产品,基
Top