Go教程技术文章
-
Go runtime.KeepAlive 的关键不是延长所有对象的生命周期,而是在系统调用返回前保持带有 finalizer 的外部资源对象可达。本文用文件描述符和底层调用示例说明放置位置、适用边界与排查清单。427 收藏 -
Go json.Decoder.Token 会按顺序读取 JSON 流中的分隔符、键和值,并在自然结束时返回 io.EOF。本文说明返回类型、嵌套层级、Token 与 Decode 的配合方式,以及截断输入和非法结构的处理边界。427 收藏 -
Go 中需要把多个文件、字符串或网络输入按顺序交给同一个消费函数时,可以用 io.MultiReader 组成连续输入流。本文说明顺序读取、EOF、非 EOF 错误和底层资源关闭责任。426 收藏 -
用 Go os/exec 分别读取 stdout 与 stderr,掌握 Start、并发消费管道和 Wait 的正确边界,避免输出混合、管道阻塞和误判退出状态。426 收藏 -
用 Go benchmark 公平比较字符串拼接实现,掌握 ReportAllocs、AllocsPerRun、B/op、allocs/op 与 b.Loop 的使用边界。426 收藏 -
用 goroutine 与 goroutineleak profile 对照数量趋势和阻塞栈,区分 Go 中正常长期存活的 worker 与真正无法唤醒的 goroutine 泄漏,并给出修复后的复测方法。426 收藏 -
用 GopherLua 的 LTable.ForEach 遍历 Lua 表,结合 LValue 类型判断、必填字段检查和嵌套表转换,把脚本配置安全地映射为 Go 业务对象。426 收藏 -
Go sync.Map.CompareAndSwap 会先比较 key 对应的旧值,只有当前值与 old 相等时才替换为 new。本文用状态更新示例说明返回值、并发重试、可比较类型和与 Store、Swap 的区别。426 收藏 -
fs.ValidPath 判断的是 io/fs 名称语法,不是任意本机相对路径。通过路径元素示例和 Open 封装,区分根目录特例、业务命名、本地转换、文件存在性与实际访问错误。426 收藏 -
Go plugin 并不是可随意替换的跨版本动态模块。本文拆解工具链、构建参数、公共依赖和平台边界,并给出同环境构建与 RPC 解耦的选择方法。426 收藏 -
用一个可运行的 Go HTTP 示例说明 http.Server.ConnContext 适合绑定连接级租户标识的边界,以及如何在请求处理中安全读取、验证和测试它。425 收藏 -
Go 1.24 用 go:wasmexport 把 Go 函数暴露给 WebAssembly 宿主。本文从 WASI reactor 和宿主调用实验入手,核对导出顺序、参数类型和初始化边界。425 收藏 -
Go 校验接口 HMAC 签名时,不要用普通字符串比较。本文用 crypto/hmac 和 hmac.Equal 说明摘要重算、编码边界、请求体一致性与常见排查方法。425 收藏 -
encoding/csv 遇到非标准引号时可以用 LazyQuotes 放宽读取,但应同时固定字段数、记录解析错误并保留抽样检查,避免把脏数据直接变成静默错列。425 收藏 -
从字符串排序迁移到 netip.Addr.Compare:本文用 ParseAddr 和 sort.SliceStable 对 IPv4、IPv6 地址做稳定排序,并说明非法输入、相同地址和 IPv6 zone 的边界。425 收藏