ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Go学习笔记:基本概念与项目结构——GOPATH、Go Modules 与常用命令

Go学习笔记:基本概念与项目结构——GOPATH、Go Modules 与常用命令 本文首发于 栏轩·阁欢迎访问阅读原文获取更好的阅读体验。一、Go 的项目结构Go 的项目结构经历了两代GOPATH 模式旧和Go Modules 模式新现在用的。1.1 GOPATH 模式了解即可早期 Go 的所有项目都必须放在$GOPATH/src下。GOPATH默认是$HOME/goLinux/Mac或C:\Users\用户名\goWindows。$GOPATH/ ├── src/ ← 源代码放在这里 ├── pkg/ ← 编译后的包 └── bin/ ← 编译后的可执行文件查看当前的 GOPATHgoenvGOPATH1.2 Go Modules 模式现代方式从 Go 1.11 开始引入Go 1.16 起默认开启。你不再需要把项目放在 GOPATH 下任何目录都可以是一个 Go 项目。每个 Go 项目就是一个模块Module模块根目录下必须有go.mod文件。二、依赖管理go.mod 和 go.sum2.1 go.mod — 模块定义文件类似于 Node.js 的package.json但更简洁。用go mod init创建go mod init 项目名生成的go.mod示例module gotest ← 模块名 go 1.24 ← Go 版本 require ( ← 依赖的第三方包 github.com/xxx v1.2.3 )2.2 go.sum — 依赖锁文件类似于package-lock.json或yarn.lock。不要手动编辑由 Go 自动维护。作用记录每个依赖包的哈希值确保每次下载的依赖内容一致防止依赖被篡改2.3 常用依赖命令# 添加依赖在代码中 import 后go mod tidy 会自动下载go mod tidy# 整理依赖添加需要的移除没用的# 查看依赖go list-mall# 列出所有依赖# 下载依赖到本地缓存go mod download# 将依赖复制到 vendor 目录可选类似于 node_modulesgo mod vendor三、GoLand 创建项目的三种模式创建项目时会看到三个选项模式说明什么时候用Go普通的 Go 项目使用 Go Modules最常用✅ 默认选择Go (GOPATH)老式 GOPATH 模式项目❌ 除非维护老项目App EngineGoogle App Engine 专用❌ 几乎用不到现在一律选第一个「Go」模式它自动启用 Go Modules。四、最简单的代码结构一个最小的 Go 项目myapp/ ├── go.mod ← go mod init 生成 └── main.go ← 入口文件// main.go — 最简单的 Go 程序packagemain// 可执行程序必须用 package mainimportfmt// 标准库格式化输入输出funcmain(){// 程序入口fmt.Println(Hello, Go!)}五、常用运行命令# 直接运行编译 运行不生成文件go run main.go# 编译为可执行文件go build# 生成 .exeWindows或 可执行文件Linux/Mac# 编译并安装到 GOBIN 目录goinstall# 格式化代码Go 官方标准gofmt-l.# 检查格式gofmt-w.# 自动修正格式# 静态检查go vet ./...# 检查代码中可能的 bug# 查看环境信息goenv# 打印所有环境变量go version# 查看 Go 版本run vs build 区别命令作用生成文件go run编译并运行适合开发调试❌ 不生成go build编译为可执行文件✅ 生成go install编译并安装到GOBIN✅ 安装到全局六、小结知识点一句话GOPATH旧的项目组织方式默认~/goGo Modules现在的标准任何目录都能当项目go.mod项目身份证类似 package.jsongo.sum依赖锁文件自动维护go run直接跑代码go build编译出可执行文件
返回列表