Go 代码格式化该用 gofmt 还是 goimports?一文讲清选择与集成方式

在 Go 项目里,`gofmt` 只能处理代码排版,而 `goimports` 还会接手 import 的增删、合并和分组。本文从两者差异、命令用法到编辑器、Git 钩子和 CI 集成,梳理一套更省心的落地方式。 写 Go 时,最常见却也最打断节奏的,往往不是业务逻辑本身,而是没删干净的 import、漏写的依赖和反复手动整理的格式问题。

Go 代码格式化该用 gofmt 还是 goimports?一文讲清选择与集成方式

Debian 下 Go 语言项目如何管理依赖

在 Debian 上做 Go 项目时,依赖管理最稳妥的方案已经很明确:优先使用 Go Modules。本文按初始化、添加、升级和清理依赖几个常见操作展开,并说明 Dep、Vendor 为何已不再适合作为新项目方案。 在 Debian 上开发 Go 项目时,依赖管理看似只是“装包”,实际会直接影响版本控制、团队协作和后续维护成本。

Debian 下 Go 语言项目如何管理依赖

Go 里的 `~int` 到底是什么意思?从底层类型到泛型约束一次讲清

Go 泛型里的 `~int` 不是“放宽类型检查”,而是把约束扩展到“所有底层类型为 `int` 的类型”。这篇文章用可编译示例拆开它的作用、类型集合语义,以及 `~[]int` 这类场景里最容易踩的边界。 很多人第一次看到 Go 泛型里的 `~int`,都会把注意力放在那个波浪线上,却不太确定它到底改变了什么。

Go 里的 `~int` 到底是什么意思?从底层类型到泛型约束一次讲清

Go 切片传参后 append,为什么有时会改到外层,有时又不会?

Go 切片传参后执行 append,结果之所以“有时影响外层、有时又不影响”,关键不在“引用类型”或“值传递”这类单句判断,而在切片头复制与底层数组复用。本文用几个短例子讲清 len、cap 和共享数组的关系,并给出业务代码里更稳妥的写法。

Go 切片传参后 append,为什么有时会改到外层,有时又不会?

Golang 编译生成的文件怎么运行

Golang 编译产物本质上就是可执行文件,但不同系统的启动方式并不完全一样。本文按“进入目录、执行文件、处理权限”三步整理 Windows、macOS 与 Linux 的常见运行方法,并补出权限不足时的处理命令,方便快速判断该输入什么命令、看到什么结果。

Golang 编译生成的文件怎么运行

Go 语言开发利器:把 go list 用到位

`go list` 经常被当成“列包命令”,但它真正的价值在于把 Go 包、模块和依赖关系变成可查询的数据。本文从基础输出讲到 `-json`、`-m`、`-f`、`-deps`、`-tags` 等常用组合,帮助你判断它适合拿来查什么、何时能替代手工排查。

Go 语言开发利器:把 go list 用到位