1. 简介
1.1 软件下载
- 可以使用命令下载
brew install go
- 如果需要指定版本可以去官网下载: https://golang.google.cn/dl/,直接安装即可
有时间的同学可以看看,go的学习文档: https://topgoer.cn/docs/golang/golang-1ccjbpfstsfi1
1.2 环境配置
下载后默认安装地址是 /usr/local/go
-
查看go版本信息: go version
-
查看go环境信息:go env
-
编辑环境变量
GOPATH: 你编写代码存放的目录
GOPROXY:根据自己的需求修改地址(我理解类似于maven的xml文件),这里我用的是我 们公司内部的地址
GOROOT: go安装的路径
-
使用 vim ~/.bash_profile 打开配置文件
export GOROOT=/usr/local/go export GOPATH=/User/xxx/go 配置你自己的地址
-
保存退出,在终端中输入 source ~/.bash_profile ,使修改立刻生效。再输入 go env 可以看到刚才配置的自定义项目路径
-
第4步修改配置文件也可以使用 go env -w GOPATH=“******” 直接回车配置更方便不用进行第5步
1.3 IDE选择
一般有几种选择
1. Intellij Idea : 需要激活,Go插件支持
2. Visual Studio Code: 免费,丰富的Go插件
3. LiteIDE:免费,用C++ QT开发与VS GCC相似
4. Goland :专为Go语言打造的IDE
2. 程序开发
package main
import "fmt"
func main() {
// 终端输出hello world
fmt.Println("Hello world!")
}
go run hellow.go
编译器如果提示:The ‘main’ file has the non-main package or does not contain the ‘main’ function
将package 换成 package main 就可以了, 需要新建一个main 文件夹。
3. 程序发布
go build跟go run 在编译过程中类似,不同之处是go build 会生成编译好的二进制文件,并删掉编译过程中产生的临时目录。若没有-o指定文件名,则和当前目录名一致。
常用参数:
参数名 | 格式 | 含义 |
---|---|---|
-o | -o filename | 指定编译后二进制文件名 |
-a | 强制重编译设计的依赖 | |
-s | 省略符号表并调试信息;故障时候打印信息 | |
-w | 省略DWARF符号表;gdb调试信息 | |
-p | 指定编译过程中的并发数,默认为cpu数 | |
-work | 编译结束不删除临时文件,查看编译生成的文件 | |
-n | 查看编译过程,不会继续执行编译后的二进制文件 | |
-x | 查看编译过程,会继续执行编译后的二进制文件 |
4. 常见的命令
go mod 即 go modules 官方定义:官方go包的集合,modules是源代码交换和版本控制的单元,go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。
- init
生成 go.mod文件,此命令在当前目录中初始化和创建一个新的go.mod文件,手动创建go.mod文件再包含一些module声明也等同该命令,而go mod init 命令是帮我们简单操作,可以帮我们自动创建。 - download
下载 go.mod 文件中知名的所有依赖,使用此命令来下载指定的模块,模块的格式可以根据主模块依赖的形式或者path@version 形式指定。 - tidy
执行go mod tidy时候工具链会进行如下操作:1、扫描你的项目中所有的 Go 文件,分析其中的 import 声明。
2、确定哪些模块是项目真正依赖的,即哪些模块是被直接或间接引用的。
3、任何 go.mod 文件中存在但项目中未引用的依赖将会被移除。
4、对于缺失的依赖(即代码中引用但未在 go.mod 文件声明的),它会尝试添加适当的版本。(这里的版本不一定是最新版本,而是根据使用的API选择合适的版本)
5、更新 go.sum 文件,包含所有依赖项的预期加密校验和。
其中go.sum是Go语言管理包管理go mod而使用的一种锁文件,用于记录Go项目中所有依赖包的路径和哈希值。每一行记录了一个依赖的信息,包括依赖项的模块路径、版本、哈希值等。
go.sum用来记录各个依赖版本和哈希值,用来验证项目依赖是否变化。当使用go mod安装依赖包的时候,根据go.mod文件中指定的版本号下载相应的依赖包,并计算依赖包的哈希值,将信息记录到go.sum中,当再次构建项目的时候go.mod检查go.sum文件,确保依赖项的哈希值和之前记录的值一样,以此来保证项目的构建过程是可重现的。go.sum文件的重要性在于保证Go项目的依赖关系的可靠性和安全性,避免因为依赖包版本不一样导致的不可预期的问题。
- graph
查看现有的依赖结构,生成项目所有依赖的报告,但可读性太差,图形化更方便。
- edit
编辑go.mod文件,之后通过download或edit进行下载 - vendor
导出项目所有的依赖到vendor目录,从mod中拷贝到项目的vendor目录下,IDE可以识别这样的目录。 - verify
校验一个模块是否被篡改过,查询某个常见的模块出错是否已被篡改 - why
查看为什么需要依赖某模块,查询某个不常见的模块是否是哪个模块的引用