Go语言技术文章
-
Go 的 map 不能用 == 比较内容,只有和 nil 比较才合法。本文从可比较类型规则出发,拆解 len、reflect.DeepEqual 与排序后序列化三种校验方式的边界,并给出测试和生产代码中的选择建议。369 收藏 -
Go 1.25 继续完善 runtime.AddCleanup 的并发清理能力。本文从文件描述符这类外部资源出发,说明它与 SetFinalizer 的语义差异、必须保留的显式 Close,以及 GODEBUG 检查方式。368 收藏 -
Go 中发起 Docker 的 POST 拉取镜像请求时,若直接用 json.NewDecoder.Decode() 仅读取一次,会提前终止连接,导致镜像拉取不完整;需循环解码流式响应体,直到 EOF 或错误发生。 Go 中发起 Docker 的 POST 拉取镜像请求时,若直接用 `json.Ne367 收藏 -
根本原因是$PATH未包含Go二进制目录;Linux/macOS需将/usr/local/go/bin添加至~/.zshrc或~/.bash_profile并source,Windows需手动添加C:Gobin到系统Path环境变量。Go 二进制安装后为什么 go version 报 command364 收藏 -
调用 time.Ticker.Stop 后,程序仍可能处理一次已经进入通道的时间值。关键不在于 Stop 会不会清空通道,而在于退出信号、通道消费和任务收尾的顺序。本文用可运行示例拆开这个边界。363 收藏 -
Golang · Go教程 | 16小时前 | 标准库 · go · 性能监控 · GC · runtime/metrics · 运行时指标 Go runtime/metrics GC周期 Float64Histogram
Go runtime/metrics 可以直接读取运行时导出的 GC 周期、堆对象和暂停时间指标,但采样时不能把累计计数当成单次耗时,也不能忽略指标类型。本文用采样器拆解 /gc/cycles/total:gc-cycles、/gc/pauses:seconds 与 Float64Histogram 的读取、换算和验收边界。362 收藏 -
本文介绍如何使用 MongoDB 聚合管道与 Go(mgo.v2)实现类似 SQL IN 的多值匹配,并对嵌套数组(如 venueList.sum)中特定 name(如 "linux")对应的 value 字段进行跨文档求和。 本文介绍如何使用 MongoDB 聚合管道与 Go(mgo.v2)实现类360 收藏 -
Go 结构体嵌入让外层类型获得更短的字段和方法访问路径,但多个嵌入成员出现同名字段或方法时,编译器会按层级和提升规则处理。本文从一个真实的编译错误切入,拆解显式访问、同级冲突和方法集变化,并给出排查清单。360 收藏 -
Go sync.Pool 适合复用短生命周期、可丢弃的临时对象,但 Put 时机和数据残留很容易写错。本文用 HTTP 响应缓冲区小实验说明 Get、Reset、Put 的边界,再用基准测试验证复用是否真的值得。359 收藏 -
Go 1.23 的 slices.Collect 可以把 iter.Seq 收成新切片,但空序列返回 nil,消费过程也只发生一次。本文用过滤、提前停止和容量检查说明它的语义边界与使用方式。357 收藏 -
Go 1.24 为 testing.T 增加 Context 方法。本文用可运行示例说明测试上下文何时取消、如何配合 Cleanup 管理资源,以及并发子测试中的边界。356 收藏 -
Golang · Go教程 | 3小时前 | golang · 随机数 · 接口设计 · 安全编程 · 令牌 · Go crypto/rand 随机令牌 base64.RawURLEncoding 过期校验
Go 的 crypto/rand 适合生成短期一次性令牌,但随机字节数、URL 安全编码和过期校验必须一起设计。本文用一个短期下载令牌示例说明熵预算、存储字段、校验顺序和常见误区。356 收藏 -
Go 模块下载并不只是从代理拿一个 zip。本文从一次依赖校验异常出发,拆开 GOPROXY、go.sum、GOSUMDB、GOPRIVATE 的信任边界,给出公有依赖校验、私有模块配置和替换后复核的实战检查清单。351 收藏 -
Go 1.27 支持泛型方法,但类型参数写在接收者声明上,接口方法仍不能声明自己的类型参数。本文用一个可运行的小型数值容器,演示声明方式、调用边界、接口限制与 go test 验证。351 收藏 -
从滚动日志窗口的实际场景出发,解释 slices.Clip 如何把切片容量收紧到长度,说明它与 slices.Clone、底层数组和 GC 回收之间的边界。346 收藏