本文始发于我的公众号:TechFlow,原创不易,求个关注程序员
今天是Go语言系列的第一篇文章,咱们来聊聊这门新的语言和它的基础语法。web
做为程序员而言,每每对于学习新的语言都是有抗拒的。若是你用惯了Java,那么你可能不太愿意去学Python,若是你刚学C或者C++可能你也会看不上Java。由于这个缘由还会引起不少口水仗,这很正常。我当时写C++的时候也看不上Java,写了Java又不想学Python,如今学会了Python,有时候也会不想看其余语言写的代码。架构
可是随着咱们的成长和实力的提高,我逐渐发现学习一门语言的成本在飞快地降低。毕竟天下语言都是程序,就好像武侠小说里各门各派的武功眼花缭乱,可是归结起来无非是拳脚功夫、刀剑或者是内功这么几种。语言也是同样,虽然我会的语言也不够多,远远没达到能够指点江山的地步。但也发现了不少语言之间的相关性实在是很强,有些理念一脉相承,有些更像是一个模子里刻出来的。既然如此,咱们为何须要学习Go这样一门语言呢?eclipse
网上相关的信息不少,不少大牛架构师高谈阔论。不少观点和见解我并无很深的体会,因此我就不作搬运工了。简单说下我我的的一点浅薄的见解。编辑器
当初学习Golang这门语言的缘由很简单,纯粹是由于工做须要。当前的公司几乎全部的系统都是以Golang写的,因此学习Golang是必须的。可是学会语言基本的使用和精通一门语言这是两回事,学会基本的用法是由于工做须要,而让我想要花时间把这门语言精通是由于一门课程。这门课程很是著名,它是MIT(麻省理工)的分布式系统的公开课,当中的内容和课后做业都很是硬核,更关键的是课后做业是用Golang写的。分布式
在学习这门课程的过程中,通过了一些思考和一些观察,Golang的确在分布式处理的场景和问题当中有必定的优点,许多优秀的解决方案都是基于Golang写的。而且这两年各种语言的流行变迁状况也印证了这一点,在最新的全世界程序员最想要学习的语言当中,Golang排名前3。在全球语言流行排行当中,Golang也冲进了前十,要知道这门语言才诞生十年。ide
而且在国内Golang工程师的需求量也与日俱增,我纯属好奇去拉勾网看了一下,全国Golang的岗位是341个。函数
看起来彷佛很少,可是咱们再来看下就业大户Java,也才500+学习
要知道,Java几乎是CS必学的语言,全部CS毕业以及相关专业毕业的学生均可以号称本身会Java。可是Go不同,它太新了,诞生不过十年,以目前高校的反应速度以及筛选课程的能力,它入选中国的教材目测最少还须要5-10年。而且和Java相比,Golang要好学的多。因此若是你尚未毕业,想要成为一名工程师,想要找一份工做,那能够考虑学习一下Go,说不定竞争压力会比Java小得多。ui
我我的以为Golang是一门很是有个性的语言,长处与短处都很是的明显。关于它的长处不少,相比于一一列举出来,在实际学习和运用的过程中领会到的感觉会深得多。
学语言第一件事就是敲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++。
最后简单聊聊Golang的开发环境,其实如今开发环境已经普世化了,不少代码编辑器能够用来写各类语言。好比业内比较流行的vscode,Atom,Sublime等等,这几种当中我我的最喜欢vscode,功能很是强大,拥有海量的插件支持,而且页面风格和使用体验也不错,而且仍是免费的。
另一个比较经常使用的是Goland,它是Jet Brains公司专门为Golang开发的IDE。Jet Brains公司专门发开各类语言的IDE,几乎每一种语言的IDE都广受欢迎。写过Java的同窗应该对IDEA都不陌生,它的体验比eclipse要好用得多。一样,Goland对于Golang的支持也很是好,使用体验很是棒,并且若是以前用过它家的其余产品会很是适应。
Goland页面风格以及各方面体验都很是棒,但缺点也很明显,一个是基本上只支持Golang,另外一个缺点就是贵。免费的社区版要阉割掉一些功能,而专业版则要好几千人民币。不过若是是学生的话能够免费申请,不得不说仍是很是人性化。
除了这些以外,还有七牛团队开源的liteide,基于C++ QT开发,所以执行效率很高,但听说调试功能不太好用。我也没有用过,感兴趣的小伙伴能够试试。
今天的文章就是这些,若是以为有所收获,请顺手点个在看或者转发吧,大家的举手之劳对我来讲很重要。