go语言特点:
1、静态类型、编译型的开源语言
2、脚本化的语言,支持多种编程范式
3、原生、给力的并发编程支持。
go语言的优势
1、脚本化
2、静态编译、效率高
3、原生支持并发 降低开发和维护的成本,可以更好执行。
劣势 :1、语法糖没有Python和ruby那么多;2、程序运行速度不及C;3、第三方库还没有主流的多。
Linux下的安装方法
下载最新二进制档案包。 golang.org/dl/
用tar命令将档案包解压到usr/local目录中
验证安装结果 go version
4个环境变量 GOROOT GOPATH GOBIN PATH
工作区 是放置GO源文件的目录
src目录用于存放源码文件
pkg用于存放归档文件 (.a为后缀的文件)所有归档文件都会存在该目录下的平台相关目录中,以代码包为组织形式。
两个隐含的go语言环境变量:GOOS(操作系统) GOARCH (计算架构)
bin目录 用于存放当前工作区中的go程序的可执行文件。
go源码文件 以.go为后缀
分三类:命令源码文件、库源码文件、测试源码文件
命令源码文件:声明自己属于main代码包、包含无参数声明和结果声明的main函数
被安装后,相应的可执行文件会被存放在GOBIN指向的目录或者当前工作区域目录/bin下。
命令源码文件是go程序的入口,不建议吧程序都写在一个文件中tes
库源码文件:不具备命令源码文件的那两个特征的文件。
测试源码文件:名称_test.go为后缀。其中至少有一个函数的名称以Test或Benchmark为前缀,并且该函数接受一个类型为*testing.T或者*testing.B的参数。
基准测试函数。
代码包:编辑和归档go程序的最基本单位。
代码包实际上市一个由导入路径代币的目录。
每个源码文件都必须声明其所属的代码包,同一代码包中的所有源码文件声明的代码包都应该相同。
代码包声明语句中的名称应该是路径最右边的命
代码包导入语句中使用的包名称应该与其导入路径一致。
代码包导入方法
别名 import str "strings"
本地化导入 import "strings"
仅仅初始化 import _"strings"
代码包初始化函数:无参数声明和结果声明的init函数。
init函数执行时机:对所有全局变量求值--->执行所有init函数
不同包之间 :不应该同一个导入的多个包的,init函数的执行先后顺序进行假定。
go run 用于运行命令源码文件。只能接受一个命令源码文件以及若干个库源码文件作为文件参数。
go 常用标记的使用
-a:强制编译相关代码,不论它们的编译结果是否已是最新的
-n:打印编译过程中所需运行的命令,但不真正的执行它们
-p n:并行编辑,其中n为并行的数量
-v:列出被编译的代码包的名称
-work:显示编译时创建的临时工作目录的路径,并且不删除它。
-x:打印编辑过程中所需要运行的命令。
go bulid 用于编译源码文件或者代码包
编译非命令源码文件不会产生任何结果文件
编译命令源码文件会在该命令的执行目中产生一个可执行文件。
执行该命令且不追加任何参数时,它会试图把当前目录作为代码包并编译。
执行该命令且以代码包导入路径作为参数的时候,该代码包及其依赖会被编译。
执行该命令且以若干源码文件为参数时,只有这些文件会被编译。
go install 用于编译并安装代码包或者源码文件。
安装代码包会在当前工作区的pkg/平台相关目录下生成归档文件
安装命令源码文件会在当前工作区的bin目录或者$GOBIN目录下生成可执行文件
执行该命令且不追加参数,它试图将当前目录作为包编译安装
go get:用于从远程代码仓库上下载并安装代码包
指定代码包会被下载到$GOPATH中包含的第一个工作区的src目录中
go get 常用标记使用
-d:只执行下载动作,而不执行安装动作。
-fix:在下载代码包后先执行修正动作,再进行编译安装
-u:利用网络来更新已有的代码包及其依赖包。