1. go 环境与命令

1. go 环境搭建

SDK 安装

  1. Go 官网:golang.org
  2. Go 中文社区:https://studygolang.com/dl
  3. Go API文档:https/golang.org 或 https://studygolang.com/pkgdoc

目录

  • api :api 存放
  • bin:go命令
  • src:go源码目录

2. go 命令

2.1 go build

  1. 编译当前目当目录
bash 复制代码
go build
或
go build .
  1. 编译指定文件或目录
bash 复制代码
#编译main文件,将会生成可指行文件
go build ./main.go
#编译指定文件pl,不会产生编译文件,仅进行编译查检查
go build ./pl
  1. main包有多个文件的情况,指定文件编译main包
bash 复制代码
#编译时必须指定main包的所有文件
go build ./main.go ./hello.go
  1. 编译时指定编译结果输出
bash 复制代码
go build -o ./out/app ./main.go ./hello.go

2.2 go run

bash 复制代码
#直接编译运行
go run
#指定main包所有关联文件
go run ./main.go ./hello.go
#指定main包所在目录
go run .

2.3 go install/get/clean

bash 复制代码
#安装可执行插件
go install github.com/google/gops@latest
#获取模块信息并更新go.mod文件,若本地缓存没有该模块,则下载模块;若有则直接引用
go get github.com/gin-gonic/gin@v1.9.0
#更新模块依赖,并更新go.mod
go get -u github.com/gin-gonic/gin@v1.9.0
#清理临时目录中的文件,age:清理整个module下载的缓存文件
go clean -mocache

2.4 gofmt

bash 复制代码
#格式化代码并输入
gofmt -w test.go

2.3 交叉编译

交叉编译需要修改三个环境变量:GOOS、GOARCH、CGO_ENABLED

GOOS:目标平台的操作系统(drwin、freebsd、linux、windows)

GOARCH:目标平台的体系架构32位不是64位(386、adm54、arm)

CGO_ENABLED:是否启用CGO,交叉编译不支持CGO,所以要禁用它

bash 复制代码
1.windows 编译 Linux 或 Mac 可执行程序
# 设置环境变量
$Env:CGO_ENABLED=0;$Env:GOARCH="amd64";$Env:GOOS="linux"
$Env:CGO_ENABLED=0;$Env:GOARCH="amd64";$Env:GOOS="darwin"
# 编译并输出app文件
go build -o ./out/app .
# mac 编译 linux 或 windows 可执行程序
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ./out/app .
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o ./out/app .
# Linux 编译 mac 与 windows 可执行程序
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 -o ./out/app .
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 -o ./out/app .

3. go mod 依赖管理

3.1 go.mod 文件

bash 复制代码
# 禄始化代码
go mod init gomod
go 复制代码
//指定 module 名
module gomod
//指定 go sdk 版本
go 1.23.1
//当前module(项目)依赖的包,通过 require 指定
require(
	github.com/bytedance/sonic v1.8.0 // indirect
)
//排除第三方包,在确认第三方依赖某个版本存在bug的情况下,可以采用排除的方式
exclude(
// dependency latest
)
//修改依依赖包的路径或版本,当依赖包发生迁移或者原始包访问不到需要使用代理进,
//通过 replace 替换原始包的咱径和版本
//可以将依赖包替换为本地包
replace(
//	source latest => target latest
)
//当前项目作为其它的项目的依赖时,如果某个版本出现问题,撤销该版本
retract(
	v1.0.0
	v1.0.2
)

3.2 go mod 命令

bash 复制代码
#将模块下载到本地缓存,需要指定模块路径及版本号
go mod download github.com/gin-gonic/gin@v1.9.0
#初始化一个新的模块到当前目录
go mod init gomodcase
#依赖对齐:添加缺少的依赖,删除未使用的赖
go mod tidy
#通过工具或脚本编辑go.mod
#添加依赖项
go mod edit -require="github.com/gin-gonic/gin@v1.9.0"
#替换路径,old[@version] 替换成 new[@version]
go mod edit -replace="golang.org/x/crypto@v0.0.0=github.com/golang/crypto@v1.2.3"
#排除第三方依赖的某个版本
go mod edit -exclude="github.com/gin-gonic/gin@v1.9.0"
#当前项目作为其他项目的依赖时,添加撤回版本用于排除有问题的版本
go mod edit -retract="v1.1.0"
#删除撤回版本记录
go mod edit -dropretract="v1.1.0"

#根据go.mod中的依赖项制作vendor副本,有了vendor副本,项目将不再依赖本地缓存
go mod vendor
#验证依赖是否正确
go mod verify
#返回对指定模块的依赖关系最短路径,解释为什么依赖指定包
go mod why github.com/gin-contrib/sse
相关推荐
Yhame.2 小时前
深入理解 Java 中的 ArrayList 和 List:泛型与动态数组
java·开发语言
mazo_command4 小时前
【MATLAB课设五子棋教程】(附源码)
开发语言·matlab
IT猿手4 小时前
多目标应用(一):多目标麋鹿优化算法(MOEHO)求解10个工程应用,提供完整MATLAB代码
开发语言·人工智能·算法·机器学习·matlab
青春男大4 小时前
java栈--数据结构
java·开发语言·数据结构·学习·eclipse
88号技师4 小时前
几款性能优秀的差分进化算法DE(SaDE、JADE,SHADE,LSHADE、LSHADE_SPACMA、LSHADE_EpSin)-附Matlab免费代码
开发语言·人工智能·算法·matlab·优化算法
Zer0_on4 小时前
数据结构栈和队列
c语言·开发语言·数据结构
一只小bit4 小时前
数据结构之栈,队列,树
c语言·开发语言·数据结构·c++
2401_882727575 小时前
低代码配置式组态软件-BY组态
前端·后端·物联网·低代码·前端框架
一个没有本领的人5 小时前
win11+matlab2021a配置C-COT
c语言·开发语言·matlab·目标跟踪
一只自律的鸡6 小时前
C项目 天天酷跑(下篇)
c语言·开发语言