1.静态类型,编译型的开源语言python
2.脚本华的语法,支持多种编程范式(函数式&面向对象)c++
3.原生,给力的并发编程的支持git
1.脚本化的语法编程
2.静态类型+编译型,程序运行速度有保障ruby
3.原生支持并发编程(下降开发,维护成本。程序能够更好的执行)网络
1.语法糖并无python和ruby那么多架构
2.目前的程序运行速度还不及c。但已经赶超c++和Java并发
3.第三方函数库暂时不能像绝对主流的编程语言那样多编程语言
1.GOROOT:安装目录svn
2.GOPATH:工做区
3.GOBIN:编译文件
GOOS:操做系统
GOARCH:计算架构
1.用于存放源码文件
2.以代码包为组织形式
1.用于存放归档文件(名称以.a为后缀的文件)
2.全部归档文件都会被存放在pkg目录下的平台相关目录中,一样以代码包为组织形式
1.当环境变量GOBIN已有效设置时,该目录会变的无心义
2.当GOPATH的值中包含多个工做区的路径时,必须设置GOBIN,不然没法成功安装go程序的可执行文件
1.名称以.go为后缀,内容以go语言代码组织的文件
2.多个go源码文件是须要用代码包组织起来的
1.声明本身属于main代码包,包含无参数声明和结果声明的main函数
2.被安装后,相应的可执行文件会被存放到GOBIN指向的目录或 当前工做区目录的bin目录下
3.go程序的入口,但不建议把程序都写在一个文件中
4.同一个代码包中强烈不建议直接包含多个命令源码文件
1.不具有命令源码文件的特征的源码文件
2.被安装后,相应的归档文件会被存放到当 前工做区目录/pkg/平台相关目录 下
1.至少有一个函数名称以Test或Benchmark为前缀
2.该函数接受一个类型为*testing.T或*testing.B的参数
3.示例:
func TestFind(t *testing.T){ } //功能测试函数 func BenchmarkFind(b *testing.B){ } //基准测试函数或性能测试函数
1.编译和归档的最基本单位
2.代码划分,集结和依赖的有效组织形式,也是权限控制的辅助手段
1.每一个源码文件必须声明其所属的代码包
2.同一个代码包中的全部源码文件声明的代码包应该是相同的
1.代码包声明语句中的包名称应该是该代码包的导入路径的最右子路径
1.代码包导入语句中使用的包名称应该与其导入的路径一致
import “strings”===> strings.HasPrefix(“abc”,”a”)
import str “strings”===>str.HasPrefix(“abc”,”a”) //能够直接使用别名
import . “strings”===>HasPrefix(“abc”,”a”) //无需前缀,本地!!!
import _ “strings” //仅执行代码包中的初始化函数
1.单一代码包内:对全部全局函数进行求值===>执行全部init函数
2.不一样代码包之间:执行被导入代码包中的init===>执行导入它的那个代码包的init函数
3. 4.每个init函数只会被执行一次,init在main函数以前执行
源码文件 —> 编译 —> 临时文件 —>运行 —>1. 可执行文件 2.归档文件
1.-a :强制编译相关代码,不论它们的编译结果是否已经是最新的,通常加上
2.-n :打印编译过程当中所需的命令,但不真正执行它们
3.-p n :并行编译,n表明并行数量。n的值最好设置为当前cpu的逻辑cpu(全部cpu的核的总数量)的个数。加快编译速度
4.-v : 列出被编译的代码包的名称(不包含go语言自带的标准库的代码包)
5.-work :显示编译时建立的临时工做目录的路径,而且不删除此临时工做目录
6.-x :打印编译过程当中所需运行的命令,并执行它们
1.用于编译源码文件或代码包
2.编译非命令源码文件不会产生任何结果文件,只会检查源码文件的有效性
3.编译命令源码文件会在该命令的执行目录中生成一个可执行文件
4.执行该命令且不追加任何参数时,它会试图把当前目录做为代码包并编译
5.执行该命令且以代码包的导入路径做为参数时,该代码包及其依赖会被编译
6.执行该命令且以若干源码文件做为参数时,只有这些文件会被编
1.用于编译并安装代码包或源码文件
2.安装代码包会在当前工做区的 pkg/平台相关目录 下生成归档文件
3.安装命令源码文件会在当前工做区的bin目录或$GOBIN目录下生成可执行文件
4.执行该命令且不追加任何参数时,它会试图把当前目录做为代码包并安装
5.执行该命令且以代码包的导入路径做为参数时,该代码包及其依赖会被安装
6.执行该命令且以命令源码文件及相关库源码文件做为参数时,只有这些文件会被编译并安装
1.-d :直至下载工做,而不执行安装动做
2.-fix :在下载代码包以后先执行修正动做,然后再紧张编译和安装。主要为了消除版本不兼容
3.-u :利用网络来更新已有的代码包及其依赖包