安装基础及概念
安装:
GO 安装官网:https://golang.org/dl/
GO 的三个环境变量重要概念:
- GOROOT:GO语言安装目录
- GOPATH:若干自定义的工作空间,也就是传统的工作区 (Workspace)
- GOBIN:GO 程序生成的可执行文件路径
HelloWorld
go run helloworld.go命令编译模式:
在源码目录下进行
go install会自动生成
bin文件夹,里面会有编译的 hello 可执行程序- go 编译程序时,会自动在
GOROOT/src 文件夹下或者在GOPATH/src文件夹下程序包里自动寻找 main 包的 main 函数入口函数进行编译。
- go 编译程序时,会自动在
环境变量的配置:
1 | #go |
以上为 GOPATH 时代时的使用,但自从 go 1.11版本以后添加了 Modules 模块,Modules 为源代码交换和版本控制单元,go命令支持直接使用 modules,包括记录和解析对其他模块的依赖性。
go Modules 时代的设置:
1 | go env -w GOBIN=/Users/guoxinli/go/bin |
然后在任意目录:
1 | $cd xxx |
go mod 命令作用:
go mod download下载依赖包到本地(默认为 GOPATH/pkg/mod )go mod edit编辑go.mod文件go mod graph打印模块依赖图go mod init初始化当前文件夹,创建go.mod文件go mod tidy增加缺少的包,删除无用的包go mod vendor将依赖复制到 vendor 目录下go mod verify校验依赖go mod why解释为什么需要依赖
Go 的执行原理
go run 执行过程
go run 主要用来执行一个命令源码文件以及若干个库源码文件,不能接收测试源码文件

生成的临时文件可以用 go run - work 来看到。
go run 生成了两个文件,一个是归档文件,一个时可执行文件,go run 第二次运行时,若导入的代码包没有发生改变,go run 不会再次编译这个导入的代码包,直接静态链接。
go build
go build 主要用于测试编译:
普通包:go build 不会产生任何文件。
main包:会产生可执行文件,需要执行 go install 或者使用 go install -o 路径/可执行文件
多个文件夹下多个文件,只执行某个文件需要: go build xxx.go
- 可指定编译输出名字 go build -o xxx
- go build 会忽略目录下以 “_” 或者 “.” 开头的 go 文件。
go build 用于编译我们指定的源码文件或代码包以及它们的依赖包。但是注意如果用来编译非命令源码文件,即库源码文件,go build 执行完是不会产生任何结果的。这种情况下,go build 命令只是检查库源码文件的有效性,只会做检查性的编译,而不会输出任何结果文件。
go install
编译并安装代码包或者源码文件。
go install 命令在内部实际上分成了两步操作:第一步是生成结果文件(可执行文件或者.a包),第二步会把编译好的结果移到$GOPATH/pkg或者$GOPATH/bin。
可执行文件: 一般是 go install 带main函数的go文件产生的,有函数入口,所有可以直接运行。
.a应用包: 一般是 go install 不包含main函数的go文件产生的,没有函数入口,只能被调用。
go install 比 go build 多干的事情:安装编译后的结果文件到指定目录。
包变量和函数
1 | package main |
变量声明:
1 | //1. var name type |
1 | package main |
1 | variable test |
打印和输出
- fmt.Print()
- fmt.Printf()
- fmt.Println
%v:源数据
1 | package main |
分支语句
1 | package main |
循环语句
1 | for key, value := range oldMap { |