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 | 格式化操作 |
go | Go语言的词法、语法树、类型等。可通过这个包进行代码信息提取和修改 |
html | HTML 转义及模板系统 |
image | 常见图形格式的访问及生成 |
io | 实现 I/O 原始访问接口及访问封装 |
math | 数学库 |
net | 网络库,支持 Socket、HTTP、邮件、RPC、SMTP 等 |
os | 操作系统平台不依赖平台操作封装 |
path | 兼容各操作系统的路径操作实用函数 |
plugin | Go 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