Go语言技术文章
-
讲清 Go flight recorder 故障诊断端点的鉴权、单并发、临时文件快照、下载响应、测试与运行边界,给出可直接改造的 Handler。453 收藏 -
Go container/heap 不会自动感知元素 priority 的变化。通过维护 Item.index,并在修改后调用 heap.Fix,可以让优先队列恢复正确顺序;删除和批量变更则分别使用 heap.Remove 与 heap.Init。452 收藏 -
Go cmp.Or 会把空字符串、数字 0 和 false 都视为零值并继续回退。本文说明它的判断边界,并用 Value 与 Valid 分离的写法保留显式零值。452 收藏 -
unicode.IsLetter 判断的是单个 rune 是否属于 Unicode Letter 类别,不等于判断用户看到的完整字符。中文通常返回 true,组合音标常属于 Mark,需要与 IsMark 和 UTF-8 遍历配合。452 收藏 -
Go 用临时文件替换配置或缓存文件时,新文件默认权限可能与旧文件不同。本文演示如何读取旧文件的权限位、应用到临时文件,并处理 umask、平台和异常清理边界。452 收藏 -
使用sql.NullTime接收database/sql查询中的NULL时间,利用Time与Valid区分缺失、零时间和具体时间,并说明展示与回写边界。452 收藏 -
解释 net.Resolver.PreferGo 与系统原生解析器的选择边界,梳理 GODEBUG、构建标签和系统配置的影响,并给出自定义 DNS 与双路径诊断写法。452 收藏 -
Go regexp.Split 的 n 参数不是分隔符数量,而是返回子串数量上限。n<0 返回全部结果,n=0 返回 nil,n>0 最多返回 n 个子串并保留最后的未切分文本。451 收藏 -
Golang · Go问答 | 3星期前 | channel · 定时器 · select · time.After · Go问答 · Go timeafter怎么处理 Go time.After定时器 Go time.After循环 Go定时器读取 Go NewTimer与NewTicker
解释 Go time.After 返回值、循环等待与 time.Time 转换,比较 NewTimer 和 NewTicker 的使用边界,帮助排查定时器读取问题。451 收藏 -
多个 goroutine 往同一个 Go channel 发送数据时,关闭权应交给发送方之外的协调者;本文用 WaitGroup 统一等待并给出提前退出边界。451 收藏 -
Go 的 database/sql 提供了泛型 sql.Null[T] 来接收可能为 NULL 的列。本文从 Scan 指针、Valid 判断、零值区分和 driver.Value 类型边界四个方面说明可空字段的正确写法。451 收藏 -
围绕 database/sql Rows 生命周期,讲清 QueryContext、Next、Scan、Err、Close 的职责边界,以及空结果、NULL、提前返回和迭代错误的处理方式。450 收藏 -
解释 Go color.NRGBA 的非预乘存储、RGBA() 的 16 位预乘返回值,以及 draw.Over 中 Alpha 如何参与混合,附固定输入的换算示例和常见边界。450 收藏 -
Go flag.Func 的回调返回 error 后,退出动作通常来自默认的 ExitOnError,而不是回调函数本身。本文拆解解析链路,并给出 ContinueOnError 的可控处理方案。450 收藏 -
从虚拟根语义讲清 Go fs.Sub:如何隐藏底层目录前缀、正确校验 io/fs 路径,以及为什么 os.DirFS 加 fs.Sub 仍不能替代 os.Root 的符号链接越界防护。449 收藏