一、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 获取包