1. 环境安装与下载
参考官网即可
Get Started - The Go Programming Language
我用的是linux环境,先将linux armd的go压缩包下载下来(其它环境下载其它对应的安装包即可),然后执行
tar -C /usr/local -xzf go1.23.0.linux-amd64.tar.gz
然后配置PATH环境变量
export PATH=$PATH:/usr/local/go/bin
执行命令go version,显示如下版本信息,说明已经安装好
2. GOMODULE
go module是一个依赖管理工具,如果我们需要安装依赖包,则需要配置代理
go env -w GOPROXY=http://mirrors.aliyun.com/goproxy/ # 公共代理
go env -w GOPRIVATE=git.xxx.com # 私有代理,具体地址看个人配置
除此之外,还有一个关键的环境变量GO111MODULE,将这个环境变量设置成on后,go项目会从go.mod中寻找包的依赖,而忽略GOPATH这个环境变量的设置,这里我们开启这个环境变量(如果想使用早期的GOPATH,可以设置为off或者auto)
go env -w GO111MODULE=on
GOMODULE常用命令如下:
go mod init [module] # 初始化 go.mod
go mod tidy # 更新依赖文件
go mod edit # 手动修改依赖文件
go mod graph # 打印依赖图
go mod verify # 校验依赖
go get -v [module] # 安装包
go get -u [module] # 更新包
3. 代码目录结构
我们设置下GOPATH(不设置的话就用的是默认值)
go env -w GOPATH='/home/kali/go'
GOPATH下主要有两个目录,一个是pkg(存放下载的包信息),一个是bin(go install后二进制文件会在这里)
我们的项目源码可以不在这个目录下,但是为了方便,我们在GOPATH里面新建一个src表示项目源码,然后新建一个目录myapp,项目代码都放在这里,一般我们的做法就是一个目录一个项目,例如: /home/kali/go/src/myapp就表示myapp这个项目的代码
当然,这里也运行多级目录,比如例如在myapp下面新建了目录mypkg那么这个包路径就是"myapp/mypkg",包名称是最后一个目录mypkg
这里简单举个例子,在myapp下新建一个目录mypkg,然后进入到该目录,进入后新建文件add.go
在add.go中新增如下代码:一个很简单的函数,计算两个整数之间的和
package mypkg
func Add(x int, y int) int {
return x + y
}
然后在myapp的目录下新建一个main目录,里面放我们的主程序main.go,并在main.go里面引用我们的包
package main
import (
"myapp/mypkg"
"fmt"
)
func main() {
fmt.Printf("Hello, world. add(2,3) = %v\n", mypkg.Add(2, 3))
}
这样我们的代码目录结构如下所示:
4. 编译
上面我们已经建立了自己的应用包,如何进行编译安装呢?进入myapp目录,执行
go mod init myapp
这样就会生成一个go.mod文件,在开启GO111MODULE的情况下,所有包都通过这个go.mod来管理,生成后进入到main目录,执行
go build main.go
会在当前目录生成一个main的二进制文件,执行该文件
或者直接go run main.go也执行同样的效果
5. 下载依赖包
我们通过go get命令下载组件,比如我们想下载github.com/sirupsen/logrus这个依赖
go get -u github.com/sirupsen/logrus
这个包会下载到GOPATH下的pkg目录中
6. 安装
编译完成后,执行go install命令即可安装,此时会将二进制文件放到GOPATH下的bin目录中,我们进入该目录,直接执行即可
此时,GOPATH目录的整个结构如下(这里为了展示方便将src放在GOPATH下,实际上src可以放在任意目录),我们可以很清晰的看到,bin目录下面存的是编译之后可执行的文件,pkg下面存放的是依赖包,src下面保存的是应用源代码。