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

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

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

Go 里 append 能不能把字符串追加到 []byte?能,但要写对

Go 里确实可以把字符串直接追加到 `[]byte`,但这不是随手就能写对的普通 `append` 调用,而是依赖 `...` 展开的语法特例。本文用可运行示例讲清合法写法、常见误区、内存分配影响,以及什么时候该预分配容量。

Go 里 append 能不能把字符串追加到 []byte?能,但要写对

Go 字符串遍历为什么 `range` 能打印汉字,`len` 索引却会乱码

同样是遍历 Go 字符串,`range` 能正常输出汉字,而基于 `len` 的索引循环却可能打印出乱码,关键差别不在“循环写法”,而在 Go 对字符串的底层定义。本文从 UTF-8、`byte`/`rune` 和常见处理方式三层展开,帮你判断什么时候该按字节处理,什么时候必须按字符处理。

Go 字符串遍历为什么 `range` 能打印汉字,`len` 索引却会乱码

轻松掌握 Go 泛型,提升代码复用和类型安全

Go 1.18 引入泛型后,开发者终于不用在“重复写同类代码”和“用 interface{} 换灵活性”之间做取舍。本文从概念、基本写法、常见场景到使用边界梳理 Go 泛型,帮助你判断它何时值得上、何时不必强用。

轻松掌握 Go 泛型,提升代码复用和类型安全

Go 语言 httptest 实战:让 HTTP 测试更简单

Go 标准库里的 `httptest`,解决了 HTTP 测试里最麻烦的几件事:起服务、占端口、清理资源,以及难以稳定复现异常场景。本文按处理器测试、客户端测试和常见进阶场景展开,结合可直接运行的示例,帮助你判断该用 `NewRecorder` 还是 `NewServer`。

Go 语言 httptest 实战:让 HTTP 测试更简单

Go语言命名返回值:什么时候更清晰,什么时候别滥用

Go 的命名返回值不算复杂,却很容易在多返回值、错误处理和 defer 场景里提升可读性。本文从语法、适用场景到使用边界梳理这个特性,帮助你判断它什么时候能让函数签名更清楚,什么时候又该保持普通写法。

Go语言命名返回值:什么时候更清晰,什么时候别滥用