今天是 Go 语言系列的第一篇文章, 我们来聊聊这门新的语言和它的基础语法.
浅谈 Golang
作为程序员而言, 往往对于学习新的语言都是有抗拒的. 如果你用惯了 Java, 那么你可能不太愿意去学 Python, 如果你刚学 C 或者 C++ 可能你也会看不上 Java. 因为这个原因还会引发很多口水仗, 这很正常. 我当时写 C++ 的时候也看不上 Java, 写了 Java 又不想学 Python, 现在学会了 Python, 有时候也会不想看其他语言写的代码.
但是随着我们的成长和实力的提升, 我逐渐发现学习一门语言的成本在飞快地下降. 毕竟天下语言都是程序, 就好像武侠小说里各门各派的武功眼花缭乱, 但是归结起来无非是拳脚功夫, 刀剑或者是内功这么几种. 语言也是一样, 虽然我会的语言也不够多, 远远没达到可以指点江山的地步. 但也发现了很多语言之间的相关性实在是很强, 有些理念一脉相承, 有些更像是一个模子里刻出来的. 既然如此, 我们为什么需要学习 Go 这样一门语言呢?
网上相关的信息很多, 很多大牛架构师高谈阔论. 很多观点和看法我并没有很深的体会, 所以我就不做搬运工了. 简单说下我个人的一点浅薄的看法.
当初学习 Golang 这门语言的原因很简单, 纯粹是因为工作需要. 当前的公司几乎所有的系统都是以 Golang 写的, 所以学习 Golang 是必须的. 但是学会语言基本的使用和精通一门语言这是两回事, 学会基本的用法是因为工作需要, 而让我想要花时间把这门语言精通是因为一门课程. 这门课程非常著名, 它是 MIT(麻省理工) 的分布式系统的公开课, 当中的内容和课后作业都非常硬核, 更关键的是课后作业是用 Golang 写的.
在学习这门课程的过程当中, 经过了一些思考和一些观察, Golang 的确在分布式处理的场景和问题当中有一定的优势, 许多优秀的解决方案都是基于 Golang 写的. 并且这两年各类语言的流行变迁情况也印证了这一点, 在最新的全世界程序员最想要学习的语言当中, Golang 排名前 3. 在全球语言流行排行当中, Golang 也冲进了前十, 要知道这门语言才诞生十年.
并且在国内 Golang 工程师的需求量也与日俱增, 我纯属好奇去拉勾网看了一下, 全国 Golang 的岗位是 341 个.
看起来似乎不多, 但是我们再来看下就业大户 Java, 也才 500+
要知道, Java 几乎是 CS 必学的语言, 所有 CS 毕业以及相关专业毕业的学生都可以号称自己会 Java. 但是 Go 不一样, 它太新了, 诞生不过十年, 以目前高校的反应速度以及筛选课程的能力, 它入选中国的教材目测最少还需要 5-10 年. 并且和 Java 相比, Golang 要好学的多. 所以如果你还没有毕业, 想要成为一名工程师, 想要找一份工作, 那可以考虑学习一下 Go, 说不定竞争压力会比 Java 小得多.
我个人觉得 Golang 是一门非常有个性的语言, 长处与短处都非常的明显. 关于它的长处很多, 相比于一一列举出来, 在实际学习和运用的过程当中领会到的感受会深得多.
Hello World
学语言第一件事就是敲 Hello World, 我想所有语言都不例外, 我们也来看下 Golang 的 Hello World, 来看下它的基本结构.
- package main
- import (
- "fmt"
- )
- func main() {
- fmt.Println("Hello World")
- }
我们来简单看下这段代码, 可以把这段代码分成三个部分.
最上面的是模块名, 也可以说成是包名, 然后是引入包的语句. 这一块其实没什么好说的, 很多语言都是这样的结果, 比如 Java 和 Python. 在 Golang 当中 main package 表示一个独立的程序, 而不是一个包. 在 main package 下的 main 函数代表这个独立程序的执行入口, 和 C++ 以及 Java 当中的 main 函数比较类似. 我们可以在 main 函数里调用其他包的各种函数.
fmt 是 Golang 当中的标准输出包, 我们调用它来输出我们想打印的东西.
写完了 Hello World 之后就要执行了, Golang 提供了两种执行方式, 一种是直接 go run + 要执行的文件名. 还有一种是和 C++ 一样先进行编译, 再通过./ 调用编译之后的二进制包.
当然执行之前我们需要在电脑上配置 Golang 的环境, 这方面网上的资料很多, 并且 Golang 的安装也比较简单, 基本上没有什么坑, 所以照着网上的博客安装就好了.
我们来分别看下这两种调用方式, 第一种我们直接使用 go run 执行代码:
还有一种方式是我们先通过 go build 对 Golang 的代码先进行编译, 会生成一个二进制文件, 之后我们直接./ 运行这个文件.
所以从这里我们可以看出来, Golang 是编译型语言而不是解释性语言, 因此它的效率会非常高, 实际上由于 Golang 的一些底层设计和特性, Golang 的运行效率非常高, 在绝大多数场景比 Java 更快, 仅仅次于 C++.
IDE
最后简单聊聊 Golang 的开发环境, 其实现在开发环境已经普世化了, 很多代码编辑器可以用来写各种语言. 比如业内比较流行的 vscode,Atom,Sublime 等等, 这几种当中我个人最喜欢 vscode, 功能非常强大, 拥有海量的插件支持, 并且页面风格和使用体验也不错, 并且还是免费的.
另外一个比较常用的是 Goland, 它是 Jet Brains 公司专门为 Golang 开发的 IDE.Jet Brains 公司专门发开各种语言的 IDE, 几乎每一种语言的 IDE 都广受欢迎. 写过 Java 的同学应该对 IDEA 都不陌生, 它的体验比 eclipse 要好用得多. 同样, Goland 对于 Golang 的支持也非常好, 使用体验非常棒, 而且如果之前用过它家的其他产品会非常适应.
Goland 页面风格以及各方面体验都非常棒, 但缺点也很明显, 一个是基本上只支持 Golang, 另一个缺点就是贵. 免费的社区版要阉割掉一些功能, 而专业版则要好几千人民币. 不过如果是学生的话可以免费申请, 不得不说还是非常人性化.
除了这些之外, 还有七牛团队开源的 liteide, 基于 C++ QT 开发, 因此执行效率很高, 但据说调试功能不太好用. 我也没有用过, 感兴趣的小伙伴可以试试.
今天的文章就是这些, 如果觉得有所收获, 请顺手点个在看或者转发吧, 你们的举手之劳对我来说很重要.
来源: https://www.cnblogs.com/techflow/p/12693957.html