Go源码类型和Go命令
Go的源码分类
-
-
库源码文件
-
测试源码文件
其中前面两种又被称为Go语言程序
命令源码文件
声明自己属于main代码包,包含无参数声明和结果声明的main函数,命令源码文件是Go程序的入口,同一个代码包中最好不要放多个命令源码文件,因为多个命令源码文件虽然可以分开单独go run 运行起来,但是无法通过 go build和go install
库源码文件
即不具备命令源码文件特征的源码文件,存放于某个代码包中的普通源码文件
测试源码文件
名称以_test.go为后缀的代码文件,必须包含Test或者Benchmark名称前缀的函数,名称以Test为前缀的函数,这种测试函数是功能测试函数,名称以Benchmark为前缀的函数,这种测试函数是性能测试函数
Go的命令
打开terminal输入go help 我们会看到以下17个go的命令
bug start a bug report
build compile packages and dependencies
clean remove object files and cached files
doc show documentation for package or symbol
env print Go environment information
fix update packages to use new APIs
fmt gofmt (reformat) package sources
generate generate Go files by processing source
get download and install packages and dependencies
install compile and install packages and dependencies
list list packages or modules
mod module maintenance
run compile and run Go program
test test packages
tool run specified go tool
version print Go version
vet report likely mistakes in packages
Go命令的命令标记
-a | 用于强制重新编译所有涉及的Go语言代码包 |
---|---|
-n | 仅打印其执行过程中用到的所有命令,而不去执行它们 |
-race | 用于检测并报告Go程序存在的数据竞争问题。可以用来检测并发编程。 |
-v | 用于打印命令执行过程中涉及的代码包 |
-work | 用于打印命令执行时生成和使用的临时工作目录的名字 |
-x | 用于打印其执行过程中用到的所有命令,并同时执行它们 |
我们先来看看与编译相关的命令:有build、get、install、run这四个
go run
专门用来运行命令源码文件的命令,它在执行时会检查源码文件的类型。如果参数中有多个或者没有命令源码文件,那么go run命令就只会打印错误信息并退出。具体流程:创建两个临时文件夹b001和exe,执行compile命令和link,生成了归档文件和可执行文件,最终的可执行文件放在exe文件夹里,最后一步就是执行可执行文件
go build
主要用于测试编译,如果在编译过程中有必要的话,则会同时编译与之相关联的包如果是Main包,执行go build之后会在当前目录下生成一个可执行文件 在terminal中输入xxx.exe 就可以跑起来如果某个文件夹下有多个文件,而只想编译其中一个文件,可以在go build之后加上文件名,比如go build xxx.go,因为go build命令会默认编译当前目录下的所有go文件go build编译库源码文件是不会产生任何结果的,go build只做检查性的编译,而不会输出任何结果文件。go build的流程和go run大体相同,只是在最后一步没有执行可执行文件,而是将可执行文件移动到了当前目录的文件夹中
go install
用来编译并安装代码包或者源码文件的go install命令在内部实际上分成了两步操作:第一步生成结果文件(可执行文件或者包)第二步把编译好的结果移动到GOPATH/pkg或者GOPATH/bin下go install和go build的区别:go install只比go build多做了一件事,即安装编译后的结果文件到指定目录
go get
用于从远程代码仓库(例如Github)上下载并安装代码包,它会把当前的代码包下载到GOPATH中的一个工作区的src目录中,并安装。go get的本质是使用git clone命令下载源码并编译,最后放到相关的目录下。
go get常用的两个标记:
-
-u 更新已有代码包及其依赖包,默认情况下, 该命令只会从网络上下载本地不存在的代码包,而不会进行更新
-
-d 让命令程序只执行下载动作,而不执行安装动作
一些其他的命令
-
go clean:移除当前源码包里面编译生成的文件
-
go fmt:格式化代码文件
-
go test:自动读取源码目录下为xxx.test.go的文件,生成并运行测试用的可执行文件
-
go doc:查看相应package的文档 例如: go doc net/http
-
go fix:修复以前老版本的代码到新版本
-
go version:查看go当前的版本
-
go env:查看go当前的环境变量
-
go list:列出当前全部安装的package
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现