Go语言技术文章
-
围绕 Go database/sql 事务重试边界,说明怎样识别明确死锁错误、回滚完整事务、使用有限退避,并通过统一加锁顺序、幂等设计和提交不确定性避免把重试变成重复写入。119 收藏 -
用 Go time.ParseDuration 读取配置时长时,区分合法单位、空值默认、非法格式和业务范围校验,让超时与间隔配置在启动阶段可定位、可测试。119 收藏 -
从 200、206 和 416 的响应症状出发,解释 Go net/http ServeContent 如何依赖 io.ReadSeeker 处理 Range 请求、获取内容长度和定位读取位置,并给出文件、自定义 Reader 与并发排障示例。118 收藏 -
Go Excelize 写入大量工作表行时,可以用 NewStreamWriter 获取流式写入器,按递增行号调用 SetRow,最后 Flush 后再保存文件。本文结合实际使用说明内存边界、收尾顺序和不能混用普通写入 API 的限制。117 收藏 -
用 Koanf env/v2 将带应用前缀的环境变量映射成嵌套配置键,说明双下划线、允许键集合、值转换和覆盖顺序,并给出受限配置示例。116 收藏 -
Go httptrace 可以把 HTTP 客户端请求拆成 DNS、连接、TLS 和响应等阶段。本文围绕 DNSStart 与 DNSDone 写出一次请求的 DNS 耗时记录,并说明连接复用、DNS 失败和并发回调时的边界。116 收藏 -
Go html/template 用 define 注册布局、template 调用组件、block 提供默认区域。本文给出独立页面装配示例,说明克隆集合、数据传递、同名覆盖与空页面的排查方法。116 收藏 -
embed.FS.Open 接收的是 io/fs 规则下的逻辑相对路径,直接传入带 ..、绝对路径或反斜杠路径会失败。本文按故障时间线解释根因,并给出可复用的清理与边界处理方式。113 收藏 -
围绕 Go net/url 的 Userinfo 展开,说明如何用 User 与 UserPassword 构造包含 @、冒号、斜杠、空格和中文的用户信息,并用 String 生成完整 URL、Parse 后取回字段,同时区分路径和查询参数的转义边界。113 收藏 -
Go Koanf 已经加载整份配置时,可以把目标路径传给 Unmarshal,只将一个子树映射到结构体。本文集中排查路径、koanf 标签、字段形状和 FlatPaths 的边界。112 收藏 -
Golang · Go教程 | 1天前 | select · Context · 超时控制 · Go教程 · time.NewTimer context.Done Go超时 Go select 多路等待
用 select 同时等待业务结果、context.Done 和超时信号,区分成功、主动取消与截止时间到达三种结果,并让后台 goroutine 在超时后仍能安全收尾。112 收藏 -
Golang · Go问答 | 1天前 | 超时 · go · HTTP服务 · net/http · Go net/http ResponseController SetReadDeadline 请求体超时
Go HTTP 服务端要限制慢请求的读取时间,可以用 ResponseController.SetReadDeadline 设置整次请求读取的截止时间。它覆盖请求体读取,零值表示取消 deadline,已经过期后不能靠重新设置更晚时间延长;还要区分 ResponseWriter 不支持该能力与请求本身读取超时。112 收藏 -
介绍GJSON读取点号键名的路径转义写法,区分Go字符串与GJSON语法,并用完整示例说明动态组件转义、字段白名单和缺失结果处理。111 收藏 -
Go 可以用带容量的 channel 保存令牌限制同时执行的任务数,并通过 context 取消等待、defer 归还令牌,避免并发失控或槽位泄漏。111 收藏 -
Go 用 bufio.Writer.ReadFrom 复制大文件时,Reader 的短读通常不是错误,底层 Writer 的短写则必须通过 ReadFrom 和最后一次 Flush 的错误共同判断。本文按调用路径说明快速路径、缓冲区、io.ErrShortWrite 与 io.ErrNoProgress 的处理方式。110 收藏