文章

Go学习笔记(入门版)

Go学习笔记(入门版)

Go 文件的执行

1)run 和 build 的区别

go rungo build 是 Go 语言中两个不同的命令,主要区别如下:

go run :

  • 编译并立即执行:将源文件编译成临时可执行文件,然后立即运行
  • 不生成持久文件:执行完成后,临时文件会被自动清理
  • 适用场景:开发测试,快速验证代码逻辑
  • 示例
    1
    2
    
    go run main.go      # 编译并执行单个文件
    go run .            # 编译并执行当前包
    

go build :

  • 只编译不执行:生成可执行文件,但不会自动运行
  • 生成持久文件:在当前目录生成可执行文件(Windows: .exe,Linux/Mac: 无扩展名)
  • 适用场景:适合部署分发,生成可以独立分发的二进制文件
  • 编译:
    1
    2
    
    go build -o myapp.exe   # 编译并指定输出文件名
                          # 使用"-o"指定路径和文件名
    
  • 执行:
1
./app.exe             # Windows

主要区别总结

特性 go run go build
执行方式 自动运行 只编译不运行
输出文件 无持久文件 生成可执行文件
使用场景 开发测试 部署分发
编译缓存 使用 使用
跨平台编译 不支持 支持(需指定 GOOS/GOARCH)
依赖嵌入 不适用 可以嵌入静态资源

2)mod 介绍

go mod init 是给 Go 项目办身份证,让 Go 知道这个项目是谁、需要哪些外部代码包。

生成的go.modgo.sum 都要提交 Git。

必须做的三件事

1
2
3
4
5
6
7
8
# 1. 进项目目录
cd my-project

# 2. 办身份证(只需一次)
go mod init my-project

# 3. 写代码、导包、运行
# Go 自动处理依赖

三个关键文件

  1. go.mod - 身份证 + 购物清单
    1
    2
    3
    4
    5
    
    module my-project  // 项目名
    go 1.21            // Go 版本
       
    // 下面自动记录需要的包和版本
    require github.com/xxx/yyy v1.2.3
    
  2. go.sum - 安全锁(自动生成,别动它)

  3. 你的代码 - .go 文件

为什么必须?

因为现代 Go 代码基本都会用别人的包。比如:

1
import "github.com/gin-gonic/gin"  // 网络框架

没有 go.mod → Go 不知道去哪找这个包、用哪个版本

go.mod → Go 自动下载正确版本

相关命令总结

1
2
3
4
5
6
7
8
9
10
11
# 初始化项目
go mod init 项目名

# 自动整理依赖(经常用)可以解决大部分依赖问题
go mod tidy

# 清除无用依赖
go clean -modcache

# 查看依赖
go list -m all

记住这三点就够了

  1. 每个项目都要先 go mod init
  2. go.modgo.sum 都要提交 Git
  3. go mod tidy 解决大部分依赖问题

类比

  • 没有 go.mod → 去超市随便拿东西
  • go.mod → 照着购物清单买东西,每次都一样

参考

【引入】1

本文由作者按照 CC BY 4.0 进行授权