随着云原生时代一系列技术栈的出现,众多企业纷纷效仿。其中包括容器技术Docker、容器编排工具k8s、微服务、CI/CD等技术栈的兴起。这些新技术完全改变了以往,靠单体应用实现的局面。同时,go语言也融入了其中。
因为对go语言感兴趣,也考虑到自己的状态,我选择了《Head First Go》这本书。由于我熟悉这本书的风格,即便有开发经验,我仍决定选择一本让我开心轻松的书来学习go语言的基础。
这本书对go语言的工具链,如gofmt代码格式和gotest测试工具等都进行了详细讲解。go的工具链是为了提高代码质量而设计的,而相比之下,java并不具备类似的工具链。
读完后,我不禁拿go和我熟悉的主语言java作比较:
1、go语法简洁,有助于提高开发效率。
2、go没有JVM这个中间层,直接编译为机器码。因此在运行速度、内存占用和启动速度方面,go都优于java。而在docker容器下,java的跨平台优势也不再存在。此外,通过多阶段构建,go可以生成比java的jar包更小的镜像。
3、go是面向值的,没有对象的概念,相比java的对象内存模型,go的内存占用更少。
4、目前的jdk还不具备协程的概念(虽然jdk19已经提出了虚拟线程概念并开启预览),而go语言有协程工具goroutine。由于go内置的这一协程工具,go特别适合高并发网络编程。
总体而言,在云原生时代,我认为go是一门具有明显优势的语言。虽然go生态还不如java庞大,但这只是时间问题。个人而言,我更倾向于将go和Python并在需要时转变为主语言。
相关推荐
© 2023-2025 百科书库. All Rights Reserved.
发表评价