go学习路线:https://www.topgoer.com/

了解go语言

什么是go语言

Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言,诞生于2006年1月2日下午15点4分5秒,于2009年11月开源,2012年发布go稳定版。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。

go语言被称之为21世纪的C语言。

为并发而生

go支持并发,从底层就实现了并发,无须任何第三方库,只需要一个go关键字

goroutinegoroutinegoroutinegoroutinegoroutinegoroutine
goroutine
1.`goroutine`具有可增长的分段堆栈。这意味着它们只在需要时才会使用更多内存。
2.`goroutine`的启动时间比线程快。
3.`goroutine`原生支持利用channel安全地进行通信。
4.`goroutine`共享数据结构时无需使用互斥锁。

Go语言常用库

在Go语言的安装文件里包含了一些可以直接使用的包,即标准库。Go语言的标准库,提供了清晰的构建模块和公共接口,包含 I/O 操作、文本处理、图像、密码学、网络和分布式应用程序等,并支持许多标准化的文件格式和编解码协议。

在 Windows 下,标准库的位置在Go语言根目录下的子目录 pkg\windows_amd64 中;在 Linux 下,标准库在Go语言根目录下的子目录 pkg\linux_amd64 中(如果是安装的是 32 位,则在 linux_386 目录中)。一般情况下,标准包会存放在 GOROOT/pkg/GOARCH/ 目录下。

Go语言的编译器也是标准库的一部分,通过词法器扫描源码,使用语法树获得源码逻辑分支等。Go语言的周边工具也是建立在这些标准库上。在标准库上可以完成几乎大部分的需求。

Go语言的标准库以包的方式提供支持,下表列出了Go语言标准库中常见的包及其功能。

Go语言标准库包名功 能
bufio带缓冲的 I/O 操作
bytes实现字节操作
container封装堆、列表和环形列表等容器
crypto加密算法
database数据库驱动和接口
debug各种调试文件格式访问及调试功能
encoding常见算法如 JSON、XML、Base64 等
flag命令行解析
fmt格式化操作
goGo语言的词法、语法树、类型等。可通过这个包进行代码信息提取和修改
htmlHTML 转义及模板系统
image常见图形格式的访问及生成
io实现 I/O 原始访问接口及访问封装
math数学库
net网络库,支持 Socket、HTTP、邮件、RPC、SMTP 等
os操作系统平台不依赖平台操作封装
path兼容各操作系统的路径操作实用函数
pluginGo 1.7 加入的插件系统。支持将代码编译为插件,按需加载(一个完整的go环境是很大也,只放需要的部分)
reflect语言反射支持。可以动态获得代码中的类型信息,获取和修改变量的值
regexp正则表达式封装
runtime运行时接口
sort排序接口
strings字符串转换、解析及实用函数
time时间接口
text文本模板及 Token 词法器

当然,优秀第三方资源也是语言生态圈的重要组成部分。近年来崛起的几门语言中,Go 算是独树一帜,大批优秀作品频繁涌现,这也给我们学习 Go 提供了很好的参照。

学习Go语言可以做什么

Go 语言从发布 1.0 版本以来备受众多开发者关注并得到广泛使用,Go 语言的简单、高效、并发特性吸引了众多传统语言(C、C#、Java、Python)开发者的加入,而且人数越来越多。

鉴于Go语言的特点和设计的初衷,Go语言作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等;网络编程方面,Go语言广泛应用于Web 应用、API应用、下载应用等;除此之外,Go语言还适用于内存数据库和云平台领域(中间件),目前国外很多云平台都是采用Go开发。

**服务器编程:**以前你如果使用C或者C++做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。

分布式系统、数据库代理器、中间件:例如Etcd。

**网络编程:**这一块目前应用最广市场大,包括Web应用、API应用、下载应用,而且Go内置的net/http包基本上把我们平常用到的网络功能都实现了。原生的网络编程才是核心,框架只是让我们偷懒的,快速开发!

开发云平台:目前国外很多云平台在采用Go开发,我们所熟知的七牛云、华为云等等都有使用Go进行开发并且开源的成型的产品。

**区块链:**目前有一种说法,技术从业人员把Go语言称作为区块链行业的开发语言。如果大家学习区块链技术的话,就会发现现在有很多很多的区块链的系统和应用都是采用Go进行开发的,比如ehtereum是目前知名度最大的公链,再比如fabric是目前最知名的联盟链,两者都有go语言的版本,且go-ehtereum还是以太坊官方推荐的版本。

go环境的安装

下载

go环境的下载地址:https://go.dev/dl/

根据自己的系统选择合适的下载:

环境变量配置

下载go语言好后,需要将go添加到环境变量中

GOROOT

变量值为你安装go语言的目录

之后将bin目录添加到Path中

go version

GOPATH

配置完环境变量后,还需要设置一个工作目录GOPATH,也就是你go代码的存放目录,随意设置,以后go的项目最好都保存在这里

在系统变量和用户变量中都配置上GOPATH

配置好后,打开cmd,输入go env,查看GOROOT和GOPATH是否正确

在GOPATH的目录下新建3个子目录:pkg、src、bin

开发工具安装

开发工具推荐jetbrain家族的GoLand开发工具

下载地址:https://www.jetbrains.com/go/download/download-thanks.html

安装完成后就可以开始go语言的开发了

Hello World

hello world

下面我们使用GoLand开发工具来开发第一个go程序

新建项目hello-world:

在项目中新建一个demo.go文件

输入代码:

package main

import "fmt"

func main() {
	fmt.Println("hello world")
}

点击运行:

hello world