一、Go简介:
	1.1 特点
	1.2 优势
	1.3 劣势
二、Go安装与环境配置:
	2.1 下载及安装
	2.2 环境配置
	2.3 测试
三、基本准则:
	3.1 相关概念
	3.2 源码文件的分类及含义
	3.3 代码包相关知识
	3.4 init函数执行时机
四、Go命令基础:
	4.1 go run
	4.2 go build
	4.3 go install
	4.4 go get

一、Go简介
1.1 特点

1.1.1 静态类型、编译型的开源语言:
静态类型意味着在编写go语言程序中,需要明确声明变量的类型。
编译型意味着go语言运行前需要编译成机器代码。
1.1.2 脚本化的语法,支持多种编程范式
脚本化:规则松散、利于入门、约束少。
范式:函数式编程、面向对象编程、可根据任务特点选择不同的风格来达到目的。
1.1.3 原生的并发编程支持:go语法中,有一种方式,支持将代码片段并发提交给CPU执行。[注意:原生支持和函数式支持有明显区别]

1.2 优势
1.2.1 脚本化的语法:易于编写Go语言程序,上手简单,程序开发效率高。
1.2.3 静态类型+编译型,程序运行速度有保障,相比于动态类型+解释型的运行效率要高得多。
1.2.3 原生支持并发编程,让Go语言在服务端软件开发具有更大优势。
1.2.4 更容易编写并发程序,降低开发、维护程序的成本。
1.2.5 编写的并发程序可以更好的执行,得益于go语法运行时系统内的调度、算法

1.3 劣势
1.语法糖比Python、Ruby少,语法糖越多,语法越灵活,意味着开发时更舒服,但是维护成本会更高;
2.目前的程序运行速度不及C,当今的计算机世界由C构造,包括操作系统、Linux/Unix,Go的编译器也由C编写,但是运行速度已经赶超C++和Java
3.第三方函数库暂时不像绝对主流的编程语言那样多


二、Go安装与环境配置
2.1 下载及安装

[root@go ~]# wget https://dl.google.com/go/go1.14.3.linux-amd64.tar.gz
[root@go ~]# tar -zxf go1.14.3.linux-amd64.tar.gz -C /usr/local
[root@go ~]# /usr/local/go/bin/go version
go version go1.14.3 linux/amd64

2.2 环境配置
GOROOT:Go语言安装目录
GOPATH:Go语言工作区的集合
GOGIN:存放Go程序的可执行文件的目录
PATH:可当作Linux系统命令进行调用

[root@go ~]# echo "
# go enviroment
export GOROOT=/usr/local/go
export GOPATH=~/golib:~/goproject
eexport GOBIN=~/gobin
export PATH=$PATH:$GOROOT/bin:$GOBIN
" >> /etc/profile
[root@go ~]# source /etc/profile

2.3 测试

[root@go ~]# go version

三、基本准则:
3.1 相关概念

3.1.1 工作区和GOPATH
工作区是放置Go源码文件的目录,一般情况下,Go源码文件都需要存放到工作区中,但对于命令源码文件来说,这不是必须的;
每一个工作区的结构都类似如下结构:

/root/golib
- src/  #存放源码文件,以代码包为组织形式
- pkg/  # 用于存放归档文件(.a为后缀的文件),所有归档文件都会存放到该目录下的平台相关目录中,同样以代码包为组织形式
- bin/  # 同于存储当前工作区中的Go程序的可执行文件;当GOPATH值中包含多个工作区路径时,必须设置GOBIN,否则无法成功安装Go程序的可执行文件。

3.1.2 平台相关目录
两个隐含的Go语言环境变量:GOOS(操作系统)和GOARCH(计算架构)
以$GOOS_$GOARCH为命名方式,如:linux_amd64
<工作区目录>/pkg/<平台相关目录>/<一级代码包>/<二级代码包>/<末级代码包>.a

3.2 源码文件的分类及含义
Go源码文件:名称以.go为后缀,多个Go源码文件需要用代码包组织起来。
源码文件分三类:

  • 命令源码文件:Go语言程序,声明自己属于main代码包,包含无参声明和结果声明的mian函数,命令源码文件在被安装后,相应的可执行文件会放到<工作区目录>/bin下,命令源码文件是Go程序的入口。
  • 库源码文件:Go语言程序,不具备命令源码文件那两个特征,被安装后,相应的归档文件存放在<工作区目录>/pkg<平台相关目录>下。
  • 测试源码文件:辅助源码文件,不具备命令源码文件的那两个特征源码文件,名称以_test.go为后缀,其中至少有一个函数的名称以Test或Benchmark为前缀,并且,该函数接收一个类型为testing.T或testing.B的参数。func TestFind(t *testing.T){//功能测试函数};func Benchmark(b *testing.B){//基准\性能测试函数}

3.3 代码包相关知识

3.4 init函数执行时机


四、Go命令基础:
4.1 go run 运行程序
4.2 go build 构建二进制程序
4.3 go install 安装包
4.4 go get 获取包