Go 语言Linux环境安装

go语言介绍

Go语言为并发而生

go语言(或 Golang)是Google开发的开源编程语言,诞生于2006年1月2日下午15点4分5秒,于2009年11月开源,2012年发布go稳定版。Go语言在多核并发上拥有原生的设计优势,Go语言从底层原生支持并发,无须第三方库、开发者的编程技巧和开发经验。

go是非常年轻的一门语言,它的主要目标是“兼具Python 等动态语言的开发速度和C/C++等编译型语言的性能与安全性”

很多公司,特别是中国的互联网公司,即将或者已经完成了使用 Go 语言改造旧系统的过程。经过 Go 语言重构的系统能使用更少的硬件资源获得更高的并发和I/O吞吐表现。充分挖掘硬件设备的潜力也满足当前精细化运营的市场大环境。

Go语言的并发是基于 goroutine 的,goroutine 类似于线程,但并非线程。可以将 goroutine 理解为一种虚拟线程。Go 语言运行时会参与调度 goroutine,并将 goroutine 合理地分配到每个 CPU 中,最大限度地使用CPU性能。开启一个goroutine的消耗非常小(大约2KB的内存),你可以轻松创建数百万个goroutine。

goroutine的特点:

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

Go语言简单易学

语法简洁

Go 语言简单易学,学习曲线平缓,不需要像 C/C++ 语言动辄需要两到三年的学习期。Go 语言被称为“互联网时代的C语言”。Go 语言的风格类似于C语言。其语法在C语言的基础上进行了大幅的简化,去掉了不需要的表达式括号,循环也只有 for 一种表示方法,就可以实现数值、键值等各种遍历。

代码风格统一

Go 语言提供了一套格式化工具——go fmt。一些 Go 语言的开发环境或者编辑器在保存时,都会使用格式化工具进行修改代码的格式化,这样就保证了不同开发者提交的代码都是统一的格式。

开发效率高

Go 语言Linux环境安装

Go语言实现了开发效率与执行效率的完美结合,让你像写Python代码(效率)一样编写C代码(性能)。

go适合做什么

  • 服务端开发
  • 分布式系统,微服务
  • 网络编程
  • 区块链开发
  • 内存KV数据库,例如boltDB、levelDB
  • 云平台

go版本

  1. Go 1.0:2012 年 3 月
  2. Go 1.1:2013 年 5 月
  3. ……
  4. Go1.16 – 2021 年 2 月

Go 语言支持以下系统

  • Linux
  • FreeBSD
  • Mac OS X(也称为 Darwin)
  • Windows

安装包下载地址为:https://golang.org/dl/。

如果打不开可以使用这个地址:https://golang.google.cn/dl/。

安装Golang

下载文件地址参考:https://studygolang.com/dl

下载二进制包

wget https://dl.google.com/go/go1.18.4.linux-amd64.tar.gz

将下载的二进制包解压至 /usr/local目录

tar -C /usr/local -xzf go1.18.4.linux-amd64.tar.gz

建立Go的工作空间

workspace,也就是GOPATH环境变量指向的目录

GOPATH

  1. 在 1.8 版本之前必须设置这个环境变量
  2. 1.8 版本后(含1.8)如果没有设置使用默认值
    1. 在 Unix 上默认为$HOME/go
    2. 在 Windows 上默认为 %USERPROFILE%/go
    3. 在 Mac 上 GOPATH 可以通过修改 ~/.bash_profile 来设置

GO代码必须在工作空间内。工作空间是一个目录,其中包含三个子目录:

  • src —- 里面每一个子目录,就是一个包。包内是Go的源码文件
  • pkg —- 编译后生成的,包的目标文件
  • bin —- 生成的可执行文件

这里,我们在/home目录下, 建立一个名为go(可以不是go, 任意名字都可以)的文件夹, 然后再建立三个子文件夹(子文件夹名必须为src、pkg、bin)。

添加环境变量(/etc/profile)

打开环境配置文件,vi /etc/profile

加入下面这三行:

export GOROOT=/usr/local/go    ##Golang安装目录
export PATH=$GOROOT/bin:$PATH
export GOPATH=/home/go    ##Golang项目目录

保存后,执行以下命令,使环境变量立即生效:

source /etc/profile    ##刷新环境变量

至此,Go语言的环境已经安装完毕。

验证一下是否安装成功,如果出现下面的信息说明安装成功了

[root@localhost go]# go version    ##查看go版本
go version go1.13 linux/amd64

查看Go语言的环境信息

[root@localhost go]# go env

项目结构

适合个人开发者

我们知道源代码都是存放在GOPATH的src目录下,那我们可以按照下图来组织我们的代码。

Go 语言Linux环境安装

目前流行的项目结构

Go语言中也是通过包来组织代码文件,我们可以引用别人的包也可以发布自己的包,但是为了防止不同包的项目名冲突,我们通常使用顶级域名来作为包名的前缀,这样就不担心项目名冲突的问题了。

因为不是每个个人开发者都拥有自己的顶级域名,所以目前流行的方式是使用个人的github用户名来区分不同的包。

Go 语言Linux环境安装

举个例子:张三和李四都有一个名叫 studygo 的项目,那么这两个包的路径就会是:

import "github.com/zhangsan/studygo"

import "github.com/lisi/studygo"

以后我们从github上下载别人包的时候,如:

go get github.com/jmoiron/sqlx

那么,这个包会下载到我们本地GOPATH目录下的 src/github.com/jmoiron/sqlx。

适合企业开发者

Go 语言Linux环境安装

Hello World

学习语言的第一个程序肯定是 hello word 了

(1)进入前面创建的三个目录里面的src目录

Go 语言Linux环境安装

(2)在 src 目录下创建一个 hello 目录,在 hello 目录中创建一个 main.go 文件:

package main  // 包,声明 main 包,表明代码所在的模块(包)

import "fmt"  // 导入代码依赖

//功能实现,main函数,是程序执行的入口
func main () { 
    fmt.Println("Hello World!") 
}

(3)在hello目录下执行:go mod tidy

不执行此命令,直接执行 go build 会报错:

go: go.mod file not found in current directory or any parent directory

(4)在hello目录下执行:go build

go编译器会去 GOPATH 的 src 目录下查找你要编译的 hello 项目

编译得到的可执行文件会保存在执行编译命令的当前目录下,如果是linux会在当前目录下找到 hello 可执行文件。

Go 语言Linux环境安装

(4)在终端直接执行该 hello 文件:

Go 语言Linux环境安装

我们还可以使用 -o 参数来指定编译后可执行文件的名字。

go build -o heiheihei

Go 语言Linux环境安装

编写测试程序

  1. 源码文件以 _test 结尾:xx_test.go
  2. 测试方法名以 Test 开头:func TestXXX (t *testing.T) {}

参考: