什么是Golang

Golang(也称为Go)是一种开源编程语言,由Google开发。它结合了静态编译语言的性能和动态语言的开发效率,适用于构建可靠、高效、并发的软件。

Golang的设计目标是简单、高效、可靠。它支持并发编程,内置垃圾回收机制,具有强大的标准库和丰富的第三方库支持,同时还具有良好的跨平台支持。Golang的语法简洁明了,易于学习和使用,同时支持面向对象编程和函数式编程。

Golang被广泛应用于构建Web应用、网络服务、分布式系统、云计算等领域。它已经成为了一种流行的编程语言,并且在不断发展和完善。

Golang 的学习方向

  1. 区块链研发工程师

  2. Go服务器端/游戏软件工程师

  3. Golang分布式/云计算软件工程师

Golang应用领域

  1. 区块链的应用开发
  2. 后台的服务应用
  3. 云计算/云服务后台应用

Go 语言的诞生

Go 语言的核心开发团队-三个大牛

image-20230430212144529

Google 创造 Golang 的原因

image-20230430212324319

Golang 的发展历程

  • 2007 年,谷歌工程师 Rob Pike, Ken Thompson 和 Robert Griesemer 开始设计一门全新的语言,这是Go 语言的最初原型。
  • 2009 年 11 月 10 日,Google 将 Go 语言以开放源代码的方式向全球发布。
  • 2015 年 8 月 19 日,Go 1.5 版发布,本次更新中移除了”最后残余的 C 代码”
  • 2017 年 2 月 17 日,Go 语言 Go 1.8 版发布。
  • 2017 年 8 月 24 日,Go 语言 Go 1.9 版发布。 1.9.2 版本
  • 2018 年 2 月 16 日,Go 语言 Go 1.10 版发布。

Golang 的语言的特点

简介:

Go 语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发维护的高效率,使用一个表达式来形容 Go 语言:Go = C + Python , 说明 Go 语言既有 C 静态语言程序的运行速度,又能达到 Python 动态语言的快速开发。

  1. C 语言中继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等
    等,也保留了和 C 语言一样的编译执行方式及弱化的指针
    举一个案例(体验):
1
2
3
4
//go 语言的指针的使用特点
func testPtr(num *int) {
*num = 20
}
  1. 引入包的概念,用于组织程序结构,Go 语言的一个文件都要归属于一个包,而不能单独存在。
  1. 垃圾回收机制,内存自动回收,不需开发人员管理

  2. 天然并发 (重要特点)
    (1) 从语言层面支持并发,实现简单
    (2) goroutine,轻量级线程,可实现大并发处理,高效利用多核。
    (3) 基于 CPS 并发模型(Communicating Sequential Processes )实现

  3. 吸收了管道通信机制,形成 Go 语言特有的管道 channel 通过管道 channel , 可以实现不同的 goroute之间的相互通信。

  4. 函数可以返回多个值。举例:

1
2
3
4
5
6
7
//写一个函数,实现同时返回 和,差
//go 函数支持返回多个值
func getSumAndSub(n1 int, n2 int) (int, int ) {
sum := n1 + n2 //go 语句后面不要带分号.
sub := n1 - n2
return sum , sub
}
  1. 新的创新:比如切片 slice、延时执行 defer

搭建go开发环境

下载 SDK 工具包

  1. Go 语言的官网为:https://go.dev/
  2. SDK 下载地址:https://golang.google.cn/dl/
  3. 选择os对应的 sdk 版本(建议使用stable versions即稳定版)

image-20230503190154398

windows下搭建go开发环境

安装

这里以go1.20.4.windows-amd64.zip为例

下载完后解压缩后会得到 go 文件夹,其中 /bin 目录包含了 go 源码包编译出的编译器(go)、文档工具(godoc)、格式化工具(gofmt),即是我们要进行配置的目录。

配置环境变量

我们需要添加两个环境变量:

GOROOT:SDK 的根目录,即解压缩后 go 文件夹所在的路径(例如 D:\GoEnv\go)
GOPATH:工作目录,即以后我们的 go 项目的工作路径,可以随意地址一个目录;

同时还需要把 SDK 下的 /bin 目录添加到系统 Path 环境变量下,添加完成后在 cmd 中输入 go version 命令检查是否配置成功:

1
2
> go version
go version go1.20.4 windows/amd64

同时可以使用 go env 查看我们配置的环境变量:

1
2
3
4
5
> go env
...
set GOPATH=E:\GoProject
set GOROOT=D:\GoEnv\go
...

配置 Go 代理

通过 go get 命令下载各种依赖时,经常需要访问 github/google 等网站,这些网站访问速度可能会比较慢,所以我们可以进行配置代理,保证快速稳定的下载访问。

这里推荐 goproxy.io,它是全球最早的 Go modules 镜像代理服务之一,采用 CDN 加速服务为开发者提供依赖下载, 该服务由一批热爱开源,热爱 Go 语言的年轻人开发维护。

配置的方式就是在用户变量或系统变量下添加 GOPROXY 环境变量,变量值填写 https://goproxy.io,direct,添加完成后,可以再次使用 go env 命令查看到该环境变量:

1
2
3
4
> go env
...
set GOPROXY=https://goproxy.io,direct
...

Linux下搭建go开发环境

go1.20.4.linux-amd64.tar.gz为例

解压

使用命令 tar -xzvf go1.20.4.linux-amd64.tar.gz -C /usr/local/ 解压

配置

go语言的环境变量配置,需要两个值:

  1. GOROOT是系统上安装Go软件包的位置
  2. GOPATH是工作目录的位置
1
2
mkdir -p /home/liaojie1314/GOPATH # 请替换liaojie1314为你的用户名
sudo chmod -R 0777 GOPATH

打开~/.bashrc/etc/profile文件,写入如下配置:

1
2
3
export GOPATH=$HOME/GOPATH  # $HOME/GOPATH为工作目录,即以后我们的 go 项目的工作路径
export GOROOT=/usr/local/go # SDK 的根目录,即解压缩后 go 文件夹所在的路径
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

保存后执行source ~/.bashrc使配置生效

测试

在命令行执行go version 如果能够显示正确的版本号则证明配置成功。