Go教程技术文章
-
Go runtime.KeepAlive 的关键不是延长所有对象的生命周期,而是在系统调用返回前保持带有 finalizer 的外部资源对象可达。本文用文件描述符和底层调用示例说明放置位置、适用边界与排查清单。427 收藏 -
Go json.Decoder.Token 会按顺序读取 JSON 流中的分隔符、键和值,并在自然结束时返回 io.EOF。本文说明返回类型、嵌套层级、Token 与 Decode 的配合方式,以及截断输入和非法结构的处理边界。427 收藏 -
Go regexp.Regexp.String 返回编译时使用的正则表达式文本,适合做配置回显和诊断日志。本文对比 String、MatchString、FindString 与 MarshalText 的职责,并说明空指针、动态规则和敏感日志的使用边界。427 收藏 -
filepath.WalkDir 不提供接管内部目录读取缓冲的参数,但可以复用调用方已有的 []string 容量保存重复扫描结果。本文给出可重用写法,并说明回调直处理、错误返回和切片生命周期边界。427 收藏 -
Go maps.Keys 返回无序键迭代器,结合 slices.Sorted 生成独立有序切片,再按键读取值。示例说明空映射、后续修改和业务比较规则。427 收藏 -
用 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 收藏 -
os.DirFS 不接收字节缓冲区。本文用完整 Go 文件摘要示例说明如何在打开文件后复用工作区,并解释 CopyBuffer 快速路径、切片长度、串行所有权和目录访问边界。426 收藏 -
encoding/csv 遇到非标准引号时可以用 LazyQuotes 放宽读取,但应同时固定字段数、记录解析错误并保留抽样检查,避免把脏数据直接变成静默错列。425 收藏 -
从字符串排序迁移到 netip.Addr.Compare:本文用 ParseAddr 和 sort.SliceStable 对 IPv4、IPv6 地址做稳定排序,并说明非法输入、相同地址和 IPv6 zone 的边界。425 收藏 -
Go x/text/language Matcher 可以把用户偏好的 BCP 47 语言标签匹配到站点支持列表。本文从支持语言与回退项开始,演示 MatchStrings、返回索引和 PreferSameScript 的使用边界。425 收藏 -
Go context.AfterFunc 会在 Context 取消后异步执行收尾函数,但 stop 返回 false 不等于收尾已经完成。本文用资源清理场景说明注册、正常结束、取消等待和并发边界,避免把 stop 当成同步等待函数。425 收藏 -
hash/maphash 没有 MakeHash,正确入口是 MakeSeed。本文区分 Seed、Hash 和 SetSeed,说明 String、Bytes 的选择、并发复用边界,以及为什么 Seed 不能跨进程持久化或用于密码学哈希。425 收藏