Go 是一种开源编程语言,可以轻松构建简单、可靠和高效的软件。
Go 还是 Golang
先问一个大多数人可能会忽略的问题:Google 的这门开源编程语言叫 Go 还是 Golang?还是两个都行?给你三秒钟想一下 ...
Google 说:它叫 Go。之所以有人称它为 Golang 是由于之前的 Go 语言官网是 http://golang.org(因为 http://go.org 已经被别人用了),因此有人将 Golang 和 Go 混用了。
现在输入 http://golang.org 会直接跳转到 go.dev 这个网址,这也算是彻底给自家孩子正个名。
Go 语言有哪些优势
官网是这样介绍 Go 语言的:
- Go 适合大规模快速构建,可靠、高效的软件
- Go 是 Google 在背后支持的一门开源编程语言
- 易于学习和入门
- 内置并发和强大的标准库
- 不断发展的合作伙伴、社区和工具生态系统
今天,Go 被用于各种应用程序:
- Go 在基于云或服务器端的应用程序中很受欢迎
- 云基础设施方面。当今最流行的基础设施工具是用 Go 编写的,例如 Kubernetes、Docker 和 Prometheus
- 许多命令行工具都是用 Go 编写的
- DevOps 和 Web 可靠性自动化也常常用 Go 来写
- Go 也被用于人工智能和数据科学领域
- 微控制器编程、机器人技术和游戏中使用也会使用 Go
这也就是为什么 Go 越来越流行。
正是因为这些优势以及在工作上的需要写一个 CLI,我就入门 Go 语言了。
Go 语言的排名
Go 语言在国内热度可谓是非常高了,我们来看看 Go 语言目前最新的排名怎么样。
Go语言排名
这是 TIOBE 2022 年一月排名前 20 编程语言,可以看到 Go 语言位于这个排行榜的第 13 位,相比于去年上升了一位。
对比排在榜单前五的 Python,C,Java,C++,C#,你觉得 Go 能否追上它们呢?
从我身边非云厂商的公司和同事来看,目前大多数都是 C/C++,Java,C#,Python 的开发人员,所以这个排名我认为还是挺符合预期的。
初学者应该学习 Python 还是 Go ?
Python 已有 30 多年的历史,但它的受欢迎程度仍在继续增长。Python 是一门出色的面向对象语言,你也可以使用函数式编程风格来编写代码。在所有编程语言中,你可能找不到一种比 Python 被更多非程序员使用的语言。
- 它的灵活性是 Python 如此受欢迎的原因之一
- 它经常用于编写脚本,Web 开发、数据科学、以及面向孩子们教授编程、制作动画等等。
那么 Go 与 Python 相比如何呢?
- Python 和 Go 都具有简单的语法
- Python 和 Go 对于初学者来说都很容易上手,且相对容易学习(Python 相对更容易)
- Python 往往在数据科学领域占据主导地位;Go 非常适合系统编程
- 程序的执行速度 Go 比 Python 快多了
- 作为高级语言,Python 拥有更广泛的库和围绕它建立的社区
- Go 是处理大型并发应用程序的理想选择、支持并发,同时运行多个程序/任务的能力。Python 没有。
今天 Python 和 Go 都是目前最流行和最方便使用的两种编程语言。对于初学者应该是学习 Python 还是 Go ?
- 如果你是零基础,建议先学习 Python。相比于 Go,Python 还是更容易学习。
- 如果你是测试工程师,想学习一门编程语言,建议学习 Python。因此绝大多数的自动化测试岗位要求是掌握 Python。
- 如果你是软件开发、DevOps 工程师,最好两门都要会。"小孩子才做选择,大人全都要。"
如何学习 Go 语言
- 看文档或视频,最最重要的是要动手!!
我最早是在 2010~2020 期间看过 Go 语言的视频教程,但由于没怎么动手写过,一直处在只知其一不知其二的阶段。
对于新手学习任何一门编程语言,看教程大概只能学会 30%,想要真正的学会必须亲自上手实践,否则一定会是:“一看就会,一写就废”。 - 确定要一个方向,立刻开始 Coding。
我的方向就是写一个 CLI 工具。尽管 Go 语言内置的 Flag 这个 package 可以用来编写 CLI 命令,我也看了很多使用 Go 开发的 CLI 项目后,注意到这些项目都没有使用内置的 Flag 包,而是绝大多数使用了 spf13/cobra 或 urfave/cli。
对于我这样的初学者,最重要的是马上开始,因此在选择的框架的时候不需要花费太多时间,cobra 有那么多优秀的项目背书,跟着用就行,最重要的是尽快动手。在编码的过程中,选择同样使用该框架的顶级项目做参考,这能帮助我们通过阅读别人的代码也让我们自己写出更优秀的代码。千万不要去 Ctrl + C 然后 Ctrl + V。 - 这是使用 cobra 的项目列表,其中包括了著名的项目比如 Kubernetes, Hugo, Docker,Github CLI 等都使用的 cobra。
- 至于 urfave/cli,我看到 Jfrog CLI 在使用它,其他正在使用 urfave/cli 的知名项目我并没有看到像 cobra 那样的列表。
- 最后,再分享几个在开发 CLI 时一切其他的优秀项目。比如:
- http://github.com/AlecAivazis/survey/v2 - 支持终端上构建交互式命令行
- http://github.com/enescakir/emoji - 表情符号库,支持在终端输出表情符号
- http://github.com/mgutz/ansi - 可以创建 ANSI 彩色字符串
参考资料
[1] spf13/cobra:
[2] urfave/cli:
[3] 列表: