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

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

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

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

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

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

新工具:gonew 生成模板

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

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

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

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

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

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

快速体验和实操

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

安装命令如下:xRM28资讯网——每日最新资讯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

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

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

执行完毕后,会在当前目录下,创建一个 hello 目录(./hello)。模板的结构如下:xRM28资讯网——每日最新资讯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 的相关代码是一致的。xRM28资讯网——每日最新资讯28at.com

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

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

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

生成目录:xRM28资讯网——每日最新资讯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。xRM28资讯网——每日最新资讯28at.com

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

一些讨论

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

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

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

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

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

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

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

总结

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 影音体验是真的强 简单聊聊iQOO Pad

    大公司的好处就是产品线丰富,非常细分化的东西也能给你做出来,例如早先我们看到了新的vivo Pad2,之后我们又在iQOO Neo8 Pro的发布会上看到了iQOO的首款平板产品iQOO Pad。虽
  • Rust中的高吞吐量流处理

    作者 | Noz编译 | 王瑞平本篇文章主要介绍了Rust中流处理的概念、方法和优化。作者不仅介绍了流处理的基本概念以及Rust中常用的流处理库,还使用这些库实现了一个流处理程序
  • 2023 年的 Node.js 生态系统

    随着技术的不断演进和创新,Node.js 在 2023 年达到了一个新的高度。Node.js 拥有一个庞大的生态系统,可以帮助开发人员更快地实现复杂的应用。本文就来看看 Node.js 最新的生
  • Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • 微信语音大揭秘:为什么禁止转发?

    大家好,我是你们的小米。今天,我要和大家聊一个有趣的话题:为什么微信语音不可以转发?这是一个我们经常在日常使用中遇到的问题,也是一个让很多人好奇的问题。让我们一起来揭开这
  • 当家的盒马,加速谋生

    来源 | 价值星球Planet作者 | 归去来自己“当家”的盒马,开始加速谋生了。据盒马官微消息,盒马计划今年开放生鲜供应链,将其生鲜商品送往食堂。目前,盒马在上海已经与
  • 郭明錤称华为和江淮汽车合作开发问界MPV,定价100万左右、计划明年量产

    8 月 1 日消息,郭明錤今天在 Medium 平台发布博文,称华为正在和江淮汽车合作,开发售价在 100 万元的问界 MPV,预计在 2024 年第 2 季度量产,销量目标为
  • 超闭合精工铰链 彻底消灭缝隙 三星Galaxy Z Flip5与Galaxy Z Fold5发布

    2023年7月26日,三星电子正式发布了Galaxy Z Flip5与Galaxy Z Fold5。三星新一代折叠屏手机采用超闭合精工铰链,让折叠后的缝隙不再可见。同时,配合处
  • iQOO 11S评测:行业唯一的200W标准版旗舰

    【Techweb评测】去年底,iQOO推出了“电竞旗舰”iQOO 11系列,作为一款性能强机,该机不仅全球首发2K 144Hz E6全感屏,搭载了第二代骁龙8平台及144Hz电竞
Top