
Go 语言从发布 1.0 版本以来备受众多开发者关注并得到广泛使用,Go 语言的简单、高效、并发特性吸引了众多传统语言开发者的加入,而且人数越来越多。
就目前来看,Go语言已经⼴泛应用于人工智能、云计算开发、容器虚拟化、⼤数据开发、数据分析及科学计算、运维开发、爬虫开发、游戏开发等领域。
GO官方网站:
GO语言业务案例:

用一些标尺来衡量一下 Go 语言,我们可以清楚地看到:
• Go 语言容易上手(简单、快捷、安全)
• Go 语言解决了并发编程和写底层应用开发效率的痛点;
• Go 语言有 Google 这个世界一流的技术公司在后面;
• Go 语言的杀手级应用是 Docker,而 Docker 的生态圈在这几年完全爆棚了。
1.Golang的学习方向
Go语言其实是Golanguage的简称,我们既然要学习Go语言,首先需要知道它能做什么事情?
• 区块链研发工程师
区块链的核心思想是去中心化,让每个人都能参加数据库的记录,比如虚拟货币
• Go服务端
目前服务器端主要采用C和C++实现,只要是C和C++能做的事情,Go语言就可以实现且做的不错。因为Go的作者Ken Thompson也是C语言的设计者,相当于对C语言设计的部分优化,比如处理日志、数据打包、虚拟机处理等,据说美团后台的流量处理就是采用Go语言编写。Go语言据处理和大并发处理的能力非常突出
• 游戏软件工程师
游戏数据通道会使用Go语言
• Golang分布式/云计算软件工程师
盛大云CDN、京东分布式文件系统
下图简单的展示下Golang工程师的薪资,相对还不错。

2.Golang的应用领域
• 区块链应用
区块链技术简称BT(Blockchain technology)也被称为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与数据库记录。

• 后端服务器应用(并发)
美团后台流量支撑程序,支撑主站后台流量(排序、推荐、搜索等),提供负载均衡、cache、容错、按条件分流,统计运行指标(qps、latency)等功能。
仙侠道游戏,包括游戏服务端通讯、逻辑和数据存储等架构。下面推荐davyxu大佬分享的Go语言的游戏服务器底层网络库。

• 云计算和云服务开发
盛大云CDN(内容分发网络),包括CDN的调度系统、分发系统、监控系统、短域名服务,CDN内部开放平台、运营报表系统及其他一些小工具等。
PS:2019年参加极棒安全大会,清华大学利用CDN发起DDoS攻击值得安全圈的朋友去学习下,利用分发实现攻击挺有意思的。
京东消息推送云服务(京东云),包括京东分布式文件系统,后台服务采用Go语言实现。

三.如何学习Golang
首先,我先补充下我是如何怎么学习编程语言的。
• 不要这样学习:
只看书,不上机
只运行,不调试
只收藏,不实践,半途而废
只做课后练习,不做工程项目
• 应该这样学习:
多敲代码,多敲代码,多敲代码
多读代码,重视实战
良好的兴趣和信念支撑,无论是书本或视频,都坚持学到最后
根据自己的兴趣或者市场的需要做一些有一定规模的项目
Golang语言的基本学习方法和其他编程语言类似
• 需要注意以下几点:
高效愉快地学习
先建立一个整体框架,然后细节
在实际工作中,要培养用到什么,能够快速学习什么能力
先know how,再know why
软件编程是一门“做中学”的学科,不是会了再做,而是做了才会
适当的“囫囵吞枣”
学习软件编程是在琢磨别人怎么做,而不是我认为应该怎么做的过程,重点放在逻辑上,而不是语法本身
四、Go语言特点
Go语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发维护的高效率,使用一个表达式来形容Go语言,则如下:
- Go = C + Python
说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发。具体特点如下:
(1) 从C语言中继承了很多理念,包括表达式语法、控制结构、基础数据类型、调用参数传值、指针等等,也保留了和C语言一样的编译执行方式及弱化的指针。
下面先普及几个Go语言的程序,让大家感受下Go语言的魅力。首先介绍指针,go语言函数中是将变量写在前面,类型写在后面,同时Go语言后不用带分号(;)。
(2) 引入包的概念,用于组织程序结构,Go语言的 一个文件都要归属于一个包,而不能单独存在。比如新建“test.go”文件,需要在一个包main中。
(3) 垃圾回收机制。内存自动回收,不需要开发人员管理,防止造成内存泄露。
(4) 天然并发性能。从语言层面支持并发,实现简单;goroutine轻量级线程,可实现大并发处理,高效利用多核;基于CPS并发模型(Communicating Sequential Process)实现。
(5) 吸收了管道通信机制。形成Go语言特有的管道channel。通过管道channel可以实现不同的goroute之间的相互通信。
(6) 函数可以返回多个值
(7) 新的创新比如切片(slice)、延时执行defer等。
五、Windows系统Golang环境配置
1.开发工具
常用的Go开发工具如下图所示:
• Visual Studio Code
微软的产品,一个运行于Mac OS、Windows和Linux之上的工具,默认提供G语言的语法高亮。安装Go语言插件,还可以支持智能提示,编译运行等功能。
• Sublime Text
可以免费试用,默认也支持Go代码语法高亮,只是保存次数达到一定数量后需要购买。
• Vim
它是从vi(Linux)发展出来的一个文本编辑器,代码补全、编译及错误跳转等方便编程的功能非常丰富。
• Emacs
它不仅仅是一个编辑器,因为功能强大,可称为集成开发环境。
• Eclipse IDE工具
开源免费,并提供GoEclipse插件。
• LiteIDE
LiteIDE是一款专门为Go语言开发的跨平台轻量级集成开发环境(IDE),是国人开发的。
• JetBrains公司的产品
PhpStrom、WebStrom和PyCharm等IDE工具,都需要安装Go插件。
2.安装VSCode
下载VScode安装软件:

它有不同版本供大家下载,Windows包括32位和64位版本,zip是压缩包,Installer需要安装;Linux中.tar.gz表示解压后就能使用64位,Mac系统只有一个下载。

作者习惯Windows系统编程,所以会选择在该环境下安装,其他操作系统建议读者可以百度解决。
- VSCodeSetup-x64-1.52.0.exe
直接运行EXE程序安装。这里选择安装路径:
直接运行EXE程序安装。这里选择安装路径:
- D:\Microsoft VS Code

这里建议选择勾选“添加到PATH”,环境变量能省去我们以后的很多麻烦。

安装过程如下图所示:


安装成功后打开VSCode如下图所示。

六、Golang语言快速入门
1.编写第一个Go程序
首先我们简单编写Golang程序。
第一步,创建一个文件夹用于存放Go程序,命名为“Goproject”。

第二步,选择“文件(File)”->“打开文件夹(Open Folder)”,可以看到GOPROJECT打开。

第三步,点击按钮创建一个新的文件“test01.go”。

第四步,编写最简答的代码。

同时,我们会看到右下角不断弹窗,因为这款工具功能检测到你正在做Go开发,它会提示你去安装相应的扩展包。目前我们暂时不安装相关插件,直接关掉即可。

2.Go语言开发环境搭建
现在我们能直接开发了吗?其实不行。写好源代码之后,我们还需要进行编译和运行源代码,因此需要搭建Go语言的开发环境,它需要SDK。
第一步,下载SDK。
SDK全称是(Software Development Kit)软件开发工具包,SDK是提供给开发人员使用的,其中包含了对应开发语言的工具包。
第二步,解压部署SDK。
需要注意,安装路径不要在有中文或特殊符号如空格等,作者将其解压复制到如下文件夹:
C:\Software\go
其中,bin文件中的go.exe用于编译可执行文件,godoc.exe用于生产文档,dofmt.exe用于代码格式化。
第三步,测试Go语言的SDK安装成功。
• cd go\bin
• dir
• go version

注意如果返回上一层目录执行“go version”会提示错误信息,这涉及到环境变量配置问题。
• 原因:当前执行的程序在当前目录下如果不存在,Windows系统会在系统中已有的一个名为path环境变量指定的目录中查找。如果仍未找到,就会出现以上的错误提示。所以需要进入go安装路径bin目录下,执行go,才会看到参数提示信息。
第四步,配置Go环境变量。
根据Windows系统在查找可执行程序的原理,可以将Go所在路径定义到环境变量中,让系统帮我们去找到运行执行的程序,这样任何目录都可以执行go指令。配置的环境变量如下所示:

右击“我的电脑”->属性->高级系统设置->高级->环境变量->新建系统变量。

添加的环境变量如下:
• 新建:GOROOT C:\Software\go

Path环境变量系统自带,不需要新建增加内容即可;同时增加的“%GOROOT%”路径表示引用上一步添加的变量。

GOPATH D:\Microsoft VS Code\Goproject
其中,GOPATH表示以后Go项目存放的路径,即工作目录。

重新打开DOS在运行命令,接着测试配置的环境变量是否成功。

3.Go语言程序快速运行
Go程序的目录结构如下图所示:
第一步,在Goproject文件夹中创建“src\go_code”目录,并创建第一个项目“project01”。

第二步,VSCode打开刚才创建的文件目录。

代码解释:
• Go程序的后缀是 .go
• Go项目结构通常采用:GOPROJECT -> src -> go_code -> 项目名称
• package main:表示test01.go文件所在包是main,在go中,每个文件都必须归属于一个包
• import “fmt”:表示引入了一个包,包名为fmt,引入该包后就能使用其函数,比如fmt.Println
• func main() {:这是一个关键字,后面对应是一个函数。main是主函数,即程序的入口。
• fmt.Println(“hello, My name is Eastmount!”):调用fmt包中函数输出内容
第三步,通过go_build命令对该go文件进行编译,生成.exe文件
进入项目main路径下,然后“dir”查看该目录下的文件。

输入命令“go build test01.go”,发现生成exe文件。

第四步,在DOS命令行下执行.exe文件,并查看运行效果。

第五步,通过go run命令可以直接运行test01.go程序,但真实环境是需要先编译后运行的。该命令的运行时间更长,因为编译过程中隐藏在命令中,而上面的步骤是运行编译后的程序。

当然,如果有想学习以上课程的小伙伴,也可加V咨询更多~
到这里就结束啦