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
相关推荐
墨云安全21 分钟前
内网资产无法暴露到公网,怎么做安全检测?2026 年内网渗透测试的落地路径
开发语言·安全·网络安全·渗透测试·php
摇滚侠38 分钟前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记
Cc.Y1 小时前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python
凤山老林2 小时前
Spring Boot 集成 Sa-Token 实现高可用权限认证:登录鉴权、动态路由权限与接口防重放实战
spring boot·后端·sa-token·bootstrap
jimy12 小时前
c++的 Type Traits (一)
开发语言·c++
Bazingga3 小时前
一次推理的完整旅程:ReAct推理深度解析
后端
Web极客码3 小时前
Python Ollama 本地 Agent 入门与订单查询实践
开发语言·jvm·python
姜鱼问生3 小时前
Nginx gzip 压缩:一个配置让页面加载快 3 倍
后端·算法·架构
颜酱3 小时前
一栋商业大厦,讲清 InnoDB 的表空间、段、区和页
后端·mysql
码事漫谈3 小时前
1956 亿行数据该怎么存:金仓时序数据库的三个实测
后端