Golang的诞生
- 计算机硬件技术更新频繁,性能提高很快。目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能。
- 软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简洁高效的编程语言。
- 企业运行维护很多c/c++的项目,C/C++程序运行速度虽然很快(因为采用静态编译),但是编译速度却很慢,同时还存在内存泄露的一系列困扰需要解决。
Golang的核心开发团队
- Ken Thompson(肯·汤普逊):1983年图灵奖、1998年美国国家技术奖得主,他与Dennis
- Ritchie是Unix系统的原创者。Thompson也发明了C语言、B语言,同时也是C语言的主要发明人。
- Rob Pike(罗布·派克): 加拿大人,曾是贝尔实验室的Unix团队和Plan 9操作计划的成员。他与Thompson公事多年,并共创出广泛使用的UTF-8字元编码。(ps:Go语言的图标-gopher 囊地鼠,是Rob Pike老婆制作的)
Golang里程碑
- 2007年,谷歌工程师Ken Thompson、Rob Pike、Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型
- 2009.11.10 ,Google将Go语言以开放源代码的形式向全球发布。
- 2015年8月19日 ,Go1.5版本发布,本次更新中移除了“最后残余的C代码”,请内存管理方面权威专家Rick
- Hudson对GC进行重新设计(重要的修正)
- 2017年2月16日 , Go1.8版本发布
- 2017年8月24日 , Go1.9版本发布
- 2018年2月16日 , Go1.10版本发布
- 2018年8月24日 , Go1.11版本发布
- 2019年2月25日 , Go1.12版本发布
- 2019年9月03日 , Go1.13版本发布
- 2020年2月25日 , Go1.14版本发布
- 2020年8月11日 , Go1.15版本发布
- 2021年2月16日 , Go1.16版本发布
Golang应用领域
- 区块链应用
- 区块链技术,简称BT(Blockchain technology),也被称为分布式账本技术,是一种互联网数据库技术,其特点是去中心化,公开透明,让每个人均可参与数据库记录。
- 后台服务器应用
- 美团后台流量支撑程序 支撑主站后台流量(排序,推荐,搜索等),提供负载均衡,cache,容错,按条件分流,统计运行指标(qps,latency)等功能
- 京东消息推送云服务/京东分布式文件系统 应用范围:后台所有服务全部用Go实现
- 云计算/云服务后台应用
- 盛大云CDN(内容分发网络)应用范围:CDN的调度系统、分发系统、监控系统、短域名服务,CDN内部开放平台、运营报表系统以及其他一些小工具等
使用Golang开发的项目
- Docker
- Docker 是一种操作系统层面的虚拟化技术,可以在操作系统和应用程序之间进行隔离,也可以称之为容器。Docker 可以在一台物理服务器上快速运行一个或多个实例。例如,启动一个 CentOS 操作系统,并在其内部命令行执行指令后结束,整个过程就像自己在操作系统一样高效。
- Go语言
- Go语言自己的早期源码使用C语言和汇编语言写成。从 Go 1.5 版本后,完全使用Go语言自身进行编写。Go语言的源码对了解Go语言的底层调度有极大的参考意义,建议希望对Go语言有深入了解的读者读一读。
- Kubernetes
- Google 公司开发的构建于 Docker 之上的容器调度服务,用户可以通过 Kubernetes 集群进行云端容器集群管理。系统会自动选取合适的工作节点来执行具体的容器集群调度处理工作。其核心概念是 Container Pod(容器仓)。
- etcd
- 一款分布式、可靠的 KV 存储系统,可以快速进行云配置。由 CoreOS 开发并维护键值存储系统,它使用Go语言编写,并通过 Raft 一致性算法处理日志复制以保证强一致性。
环境搭建
Golang SDK下载及安装
-
进入Golang官网下载适合自己系统的SDK,我这里使用的是Windows系统,所以下载的版本就为go1.17.1.windows-amd64.msi
-
下载成功后,运行安装程序进入Golang SDK欢迎界面,点击
Next
-
阅读完协议后,选中
我接受许可协议中的条款
,点击Next
-
选择安装目录(默认路径即可),点击
Next
-
确认安装
-
安装成功后,点击
Finish
完成安装
-
测试Golang SDK是否安装成功
Win+r
键盘输入cmd
打开控制台程序,输入go version
命令查看Golang SDK版本,如果成功输出表示已经成功安装
注意:一般通过安装程序(.msi)都会默认在环境变量中添加GOPATH
(用于存放Golang的项目目录),并在Path中添加Golang安装目录下的bin目录
如果通过zip方式安装Golang SDK需要手动将如上配置添加至环境变量,否则在cmd输入go version
将会无法输出Golang版本信息
Golang IDE下载及安装
常见的Golang IDE有
- Goland
- Goland,商业公司jetbrains 近两年推出的 Go 集成开发环境,相信很多程序都用过他们家的IDE,比如Java的 Intellj IDEA、PHP的PHPStorm、Python的PyCharm、C++的CLion、前端的WebStorm等。使用JetBrains的IDE,我们可以享受到它优秀的开箱即用的体验和 jetbrains 积累十几年的插件体系。
- VS Code
- 由微软开发的一款功能强大的现代化轻量级代码编辑器IDE,免费开源。通过它强大的插件扩展能力,VS Code几乎支持主流语言的项目开发。毫无例外,GO也是其中之一。
- Vim GO
- 细究起来,vim应该是一款文本编辑器,但它却拥有了很多不该属于文本编辑器的能力,比如单词补全、ctags标签跳转、窗口分隔、崩溃文件恢复、文件diff、400多种文本高亮等。最重要的一点是,vim有一套自己的脚本语言,这为它通过插件扩展自己的能力提供了可能。
Goland下载及安装
- 进入Goland官网,点击
Download
进入下载页面
- 下载成功后,运行安装包进入欢迎界面,点击
Next
- 选择安装位置,点击
Next
- 安装选项(创建快捷方式、添加到环境变量),按照个人方式选择,点击
Next
- 安装成功后(我暂时不重启),点击
Finish
首次使用Goland
由于Goland需要收费,所以首次运行时会出现以下界面,我们点击Evaluate for free
,进去免费评估版试用。
点击Continue
,进入Goland
当然你也可以点击此处,注册学生版、开源组织、大学教育机构版
通过Goland创建一个HelloGolang项目
一般情况下,我们会创建一个工程文件,工程文件中一般包含
- src
- 存放源代码
- bin
- 存放编译好的文件
- pkg
- Golang依赖库文件
进入Goland,点击New Project
创建一个项目
双击工程文件夹,打开src目录,右键创建一个Hello
文件夹,并在文件夹中创建一个HelloGolang.go
文件,来写来我们的第一个Golang程序。
写下如下代码
package main
import "fmt"
func main() {
fmt.Println("hello golang")
}
由于我们使用的Golang版本大于1.11,所以我们需要添加go.mod[1]文件
保存成功后,添加Golang运行/调试配置
添加成功后,点击Run
按钮,查看运行结果
可以看到,我们的程序已经成功的Run起来了。至此我们的Golang开发环境已经全部搭建完成,接下来就开启你的Golang之旅吧~
Go.mod是Golang1.11版本新引入的官方包管理工具用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。
Go.mod其实就是一个Modules,关于Modules的官方定义为:
Modules是相关Go包的集合,是源代码交换和版本控制的单元。go命令直接支持使用Modules,包括记录和解析对其他模块的依赖性。Modules替换旧的基于GOPATH的方法,来指定使用哪些源文件。
Modules和传统的GOPATH不同,不需要包含例如src,bin这样的子目录,一个源代码目录甚至是空目录都可以作为Modules,只要其中包含有go.mod文件。 ↩︎