Go教程技术文章
-
Go 使用 bufio.Writer 写文件时,Flush 成功并不等于关闭顺序正确。本文用最小示例拆开 Write、Flush、Close 三个阶段,定位空文件、defer 逆序和错误被覆盖等常见问题。435 收藏 -
用 Go net/textproto 读取原始 HTTP 风格请求头,掌握 ReadMIMEHeader、重复字段、续行、键名规范化和输入长度边界。434 收藏 -
os.OpenFile 的 O_CREATE 只负责文件不存在时创建,不提供独占创建保证。并发生成同一文件时,应使用 O_CREATE|O_EXCL,并处理 os.ErrExist、部分写入和读取时机。433 收藏 -
Go http.Server 的优雅关闭超时不是 Server 的固定字段,而是传给 Shutdown 的 context 截止时间。本文用信号、5 秒预算和错误处理示例说明配置方式,以及 WebSocket 等劫持连接的边界。433 收藏 -
Go 1.23 的 slices.Collect 可以把 iter.Seq 迭代器结果收集成新的切片。本文说明 slices.Values、自定义序列、nil 结果、深拷贝边界,以及已知长度时如何用预分配 append 控制容量。432 收藏 -
strings.CutPrefix 一次只判断一个前缀。本文说明多个候选存在重叠时如何按最长优先,业务规则明确时如何保留显式顺序,以及空前缀和未命中的处理方式。431 收藏 -
用一个有界并发队列讲清 Go sync.Cond 的 Wait、Signal、Broadcast 和 for 条件检查,避免消费者空取与关闭后永久等待。429 收藏 -
Go 的 html/template 和 text/template 接口相近,但安全边界完全不同。本文从普通字符串、HTML 上下文、纯文本输出和 template.HTML 安全类型四个角度说明选择方法,并给出迁移与测试检查清单。427 收藏 -
用 Go benchmark 公平比较字符串拼接实现,掌握 ReportAllocs、AllocsPerRun、B/op、allocs/op 与 b.Loop 的使用边界。426 收藏 -
解释 Go math/big.Float.Text 的 format 与 prec 如何共同决定输出形态,比较 e、f、g、x、b、p 的参数语义,并给出固定数值的可读示例与边界判断。424 收藏 -
Go 标准库 maps.Clone 可以复制 map 的顶层键值结构,并保留 nil 输入的语义。本文用最小示例说明普通复制、nil 与空 map、浅复制边界、自定义 map 类型和旧环境替代写法。423 收藏 -
用互斥的 go:build 约束隔离 Go 的生产实现与测试替身,配合 go test -tags 和 go list 检查文件选择,避免测试代码误进入生产构建。423 收藏 -
讲清 Go time.FixedZone 的 name 与秒级 offset 语义,演示如何构造 UTC+08:00、转换已有时间并区分 FixedZone 与 LoadLocation。423 收藏 -
用 Go io.MultiReader 按顺序合并多个输入流,再交给 io.Copy 统一消费;文章同时说明部分读取、非 EOF 错误、文件关闭和 MultiWriter、LimitReader 的选型边界。421 收藏 -
通过 go mod why 的包级、模块级和 -vendor 查询,理解依赖路径范围,避免把解释命令误当成清理或版本选择命令。420 收藏