安装基础及概念
安装:
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 { |