文章目录
Github
Golang 官网
下以操作均在 Mac 环境
安装 gvm
# 安装相关依赖
brew install mercurial
# 安装 gvm
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
# gvm直接生效
source ~/.gvm/scripts/gvm
# 查看版本
gvm version
配置环境变量
官方国内镜像:https://golang.google.cn/dl/
阿里云镜像:https://mirrors.aliyun.com/golang/
中科大镜像:http://mirrors.ustc.edu.cn/golang/
vim ~/.bash_profile
# 添加内容
export GO111MODULE=on
export GOPROXY=https://goproxy.io,direct
export GO_BINARY_BASE_URL=https://golang.google.cn/dl/
export G_MIRROR=https://golang.google.cn/dl/
[[ -s "$HOME/.gvm/scripts/gvm" ]] && source "$HOME/.gvm/scripts/gvm"
export GOROOT_BOOTSTRAP=$GOROOT
# 环境生效
source ~/.bash_profile
gvm常用命令
# 查看可安装版本
gvm listall
# 查看已安装版本
gvm list
# 安装 Go 版本(1.4>版本,需要加上-B)
gvm install go1.21.2 -B
# 使用指定版本
gvm use go1.21.2
# 设置默认版本
gvm use go1.21.2 --default
# 卸载 Go 版本
gvm uninstall go1.21.2
# 要完全删除 gvm 以及所有已安装的 Go 版本和软件包
gvm implode
gvm安装Golang
gvm install go1.4 -B
gvm use go1.4
# 安装1.7+版本需要先安装1.4
gvm install go1.17.13 -B
gvm use go1.17.13
# 安装1.20+版本需要先安装1.17
gvm install go1.21.6 -B
gvm use go1.21.6
# 设置为默认版本
gvm use go1.21.6 --default
- 安装完最新版,不需用到旧版本可以卸载
gvm uninstall go1.4
gvm uninstall go1.17.13
# 卸载其它有安装包的版本
gvm use go1.21.4 && go clean -modcache
gvm uninstall go1.21.4
- 验证Golang是否安装成功
# 查看 Go 版本
go version
- Golang 环境信息
# 打印 Go 语言环境信息
go env
名称 | 说明 |
---|---|
CGO_ENABLED | 指明cgo工具是否可用的标识。 |
GOARCH | 程序构建环境的目标计算架构。 |
GOBIN | 存放可执行文件的目录的绝对路径。 |
GOCHAR | 程序构建环境的目标计算架构的单字符标识。 |
GOEXE | 可执行文件的后缀。 |
GOHOSTARCH | 程序运行环境的目标计算架构。 |
GOOS | 程序构建环境的目标操作系统。 |
GOHOSTOS | 程序运行环境的目标操作系统。 |
GOPATH | 工作区目录的绝对路径。 |
GORACE | 用于数据竞争检测的相关选项。 |
GOROOT | Go 语言的安装目录的绝对路径。 |
GOTOOLDIR | Go 工具目录的绝对路径。 |
- GOROOT和GOPATH
# Go 语言安装目录 ~/.gvm/gos/go1.21.6
echo $GOROOT
# Go 语言源码存放目录 ~/.gvm/pkgsets/go1.21.6/global
echo $GOPATH
- Golang 安装包缓存目录
cd ~/.gvm/archive
创建项目
mkdir demo1
cd demo1
# 初始化项目
go mod init example.com/demo1
# 创建main.go文件
vim main.go
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello, world!")
}
运行应用
# 下载依赖包
go mod tidy
# 执行程序
go run main.go
- 编译生成可执行程序
go build main.go
Go 常用命令
- go run 编译并运行
go run main.go
- go build 编译 Go 程序
# 生成一个可执行文件
go build main.go
- go install 编译并安装Go 程序
# 将生成的可执行文件安装到 $GOPATH/bin 目录下
go install main.go
- go get 下载并安装指定的包及其依赖
go get .
# 获取github远程代码包
go get github.com/example/package
- go vet 检查 Go 代码中的静态错误
go vet main.go
- go fmt 格式化 Go 代码
# 使其符合 Go 的编码规范
go fmt main.go
- go test 运行测试文件
go test filename_test.go
- go doc 查看文档
# 可以查看包、函数等的文档
go doc fmt.Println
- go clean 清理编译缓存和生成的文件
# 清理安装的包
go clean -i
- go version 显示安装的 Go 版本
go version
- go env 显示 Go 相关的环境变量信息
go env
- go list 列出指定模块的所有包
go list
Gin Web 框架
Gin 简介
Gin框架是一个用于构建Go语言Web应用程序的轻量级框架。它以速度和高效性为设计目标,被广泛用于构建RESTful API。
Gin Github
Gin 文档
代码示例
mkdir demo2
cd demo2
# 初始化项目
go mod init example.com/demo2
# 创建main.go文件
vim main.go
- main.go
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
router := gin.Default()
// 创建一个路由组 "/api"
apiGroup := router.Group("/api")
// 在路由组中定义路由
apiGroup.GET("/users", getUsers)
apiGroup.POST("/users", createUser)
apiGroup.GET("/posts", getPosts)
// 启动服务器
router.Run(":8080")
}
// 路由处理函数
func getUsers(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"message": "Get Users"})
}
func createUser(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"message": "Create User"})
}
func getPosts(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"message": "Get Posts"})
}
- 运行应用
# 下载依赖包
go mod tidy
# 执行程序
go run main.go
推荐开源框架
- https://github.com/go-gorm/gorm
- https://github.com/go-micro/go-micro
- https://github.com/gogf/gf
- https://github.com/kataras/iris
- https://github.com/cloudwego/kitex
- https://github.com/go-kratos/kratos