目录
1、概述与环境搭建
1.1 Go语言学习方向
Golang,我们可以简写为Go。
Go的学习方向有区块链研发工程师、Go服务端/游戏软件开发、Go分布式/云计算软件工程师或用于运维工作以及后端工具开发。
-
区块链应用:简称BT(Blockchain technology),也被称为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,然每个人均可参与数据库记录。
-
后端服务器应用:支撑主站后台流程(排序、推荐、搜索等),提供负载均衡,cache、容错、按条件分流,统计运行指标(qps、latency)等功能。
-
云计算/云服务器后台应用:应用于云计算平台的后端计算服务。
-
后端应用开发:使用Go应用于后端应用开发。
1.2 Go语言发展简史
Ken Thompson(肯.汤姆森):1983年“图灵奖(Turing Award)”和1998年“美国国家技术奖(National Medal of Technology)”得主。他与Dennis Ritchie是Unix的原创者。Thompson也发明了后来衍生出C语言和B程序语言,同时也是C语言的主要发明人。
Rob Pike(罗布.派克):曾是“贝尔实验室(Bell Labs)”的Unix团队成员和Plan 9操作系统计划成员。他与Thonmpson共事多年并共创出广泛使用的UTF-8字元编码。
Robert Griesemer:曾协助制作Java的HotSpot编译器和Chrome浏览器的JavaScript引擎V8。
- 2007年,谷歌工程师Rob Pike, Ken Thompson和Robert Griesemer开始设计一门全新的语言,这是Go语言最初原型。
- 2009年11月10日,Google将Go语言以开放源代码的方式向全球发布。
- 2015年8月19日,Go1.5版本发布,本次更新中移除了“最后残余的C代码”。
- 2017年2月17日,Go语言Go 1.8版本发布。
- 2017年8月24日,Go语言Go 1.9版本发布。
- 2018年2月16日,Go语言Go 1.10版本发布。
1.3 什么是程序
程序:为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合。
1.4 为什么创造了Go语言
- 计算机硬件技术更新频繁,性能提高很快。目前主流编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能。
- 软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简洁高效的编程语言【现有的编程语言:1.风格不统一 2.计算能力不够 3.处理大并发不够好】。
- 企业运行维护很多C/C++的项目,C/C++程序运行速度很快,但是编译速度确实很慢,同时还存在内存泄漏的一系列的困扰需要解决。
1.5 Go语言特点以及快速体验
1.5.1 Go语言特点
Go语言保证了既能达到静态编译语言的安全和性能又能达到动态开发语言维护的高效率,使用一个表达式来形容Go语言,GO = C + Python,说明Go语言既有C静态语言程序的运行速度又能达到Python动态语言的快速开发。
- 从C语言中继承了很多理念:包括表达式语法、控制结构、基础数据类型、调用参数传值、指针等等,也保留了和C语言一样的编译执行方式及弱化的指针。
package main
// go语言的指针使用特点(体验)
func testPtr(num *int) {
*num = 20
}
- 引入包的概念:用于组织程序结构,Go语言的“一个文件都要归属一个包”,而不能单独存在。
$ vim main.go
// 一个Go文件需要在一个包
package main
import "fmt"
func main() {
fmt.Println("OK")
}
$ go run main.go
OK
-
垃圾回收机制:内存自动回收,不需开发人员管理。
-
天然开发:从语言层面支持并发,实现简单。goroutine轻量级线程,可现实大并发处理,高效利用多核。基于CPS并发模型(Communicating Sequential Processes)实现。
-
吸收了管道通信机制,形成Go语言特有的管道channel。
-
函数可以返回多个值。
// 写一个函数,实现同时返回 和、差
// go 函数支持返回多个值
func getSumAndSub(n1 int, n2 int) (int, int) {
sum := n1 + n2 // go语句后面不需要带分号;
sub := n1 - n2
return sum , sub
}
- 新的创作:比如切片slice、延时执行defer等。
1.6 Go语言的开发工具
工具介绍:
-
Visual studio code Microsoft 产品(VSCode):一个运行于Mac OS、Windows和Linux之上的,默认提供Go语言的语法高亮,安装Go语言插件还支持智能提示、编译运行等功能。
-
Sublime Text:可以免费使用,默认也支持Go语法高亮。
-
Vim:vim是从vi发展出来的一个文本编译器,代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广发使用。
-
Emacs:Emacs传说中的神奇,它不仅仅是一个编译器,因为功能强大可称为集成开发环境。
-
Eclipse IDE:开源免费,并提供GoEclipse插件。
-
LitelDE:LitelDE是一款专门为Go语言开发的跨平台轻量级集成开发环境(lDE).
-
JetBrains公司的产品:PhpStrom、WebStrom和Pycharm等lDE工具都需要安装Go插件。
1.7 Windows 安装 VSCode
VSCode官网地址
下载完成后一路安装即可。
打开VSCode搜索“Chinese插件”汉化 VSCode,如下图
至此VSCode安装完成。
1.8 Windows 下搭建Go开发环境(安装和配置SDK)
1.8.1 什么是SDK
SDK全称(Software Development Kit,软件开发工具包)
SDK是提供给开发人员使用的,其中包含了对应开发语言的工具包。
将代码编译为可执行文件需要SDK提供的工具API
1.8.2 Go SDK下载
- 如何选择对应的SDK版本:Windows下SDK各个版本说明
- 32位系统:go 1.9.2 windows-386.zip
- 64位系统:go 1.9.2 windows-amd64.zip
- 请注意,安装路径不要有中文或特殊符号如空格等。
- 将Go压缩包解压到安装目录,这里我解压到了E:\Go文件夹下。如下图
1.8.3 配置GO环境变量
根据Windows系统在查找可执行程序的原理,可以将Go所在路径定义到环境变量中,让系统帮我们去找运行执行的程序,这样在任何目录下都可以执行go指令。
需要配置的环境变量:
GOROOT:指定Go SDK安装路径。
GOPATH:Go项目的存放路径既工作目录。
环境变量测试