Go语言技术文章
-
Go 中可以通过 Scanner.Split 注册自定义 SplitFunc,按 || 等多字节分隔符读取记录。关键是未遇到完整分隔符时等待数据、EOF 返回余量,并用 Buffer 处理记录长度上限。338 收藏 -
解释 Go goroutine 因为没人接收 channel 而长期阻塞的原因,并用 context、select、关闭责任和等待机制设计可退出的发送路径。338 收藏 -
Golang · Go问答 | 5天前 | Context · HTTP客户端 · Go问答 · Go请求超时 Go clienttimeout http.Client Timeout Go客户端超时 Transport阶段超时
本文解释 Go http.Client.Timeout 的总时限范围,并用请求级 context 与 Transport 阶段参数区分不同客户端边界。338 收藏 -
Golang · Go问答 | 3天前 | go · Context · Go问答 · context.Cause Go context.WithCancelCause CancelCauseFunc Go 上下文取消原因 Go 下游读取取消原因
讲清 Go context.WithCancelCause 返回的 CancelCauseFunc 如何把具体错误传给下游,以及 context.Cause 与 ctx.Err 的区别、取消顺序和资源清理边界。338 收藏 -
io.MultiWriter 按顺序把同一份数据写入多个目标;中间目标失败时不会回滚或继续写。本文说明如何判断部分写入、记录失败目标并设计幂等补偿。337 收藏 -
sql.Conn.Raw 能让 Go 程序临时访问驱动连接,但回调结束后 database/sql 只根据返回错误判断连接是否还能用。本文解释修改驱动状态后的复用风险,以及何时应返回 driver.ErrBadConn。334 收藏 -
Golang · Go教程 | 3天前 | Go教程 · 输入校验 · Go math/big.Int.SetString Go 大整数进制解析 SetString 返回值判断 Go 输入校验 big.Int 字符串转换
讲清 Go math/big.Int.SetString 的成功与失败返回值、base=0 前缀规则、固定进制的常见误判,并给出安全处理非法输入的完整示例。334 收藏 -
cgo 返回的 C 指针并非一律不能保存到 Go。本文区分 Go pointer 与 C pointer,说明 unsafe.Pointer 的持有边界、C.free 释放责任,以及 cgocheck 报错的排查方法。334 收藏 -
用 reflect.StructOf 动态生成带 Tag 的结构体时,重点检查字段是否导出、Tag 是否按约定格式读取,以及嵌入字段不支持提升方法这三个边界。333 收藏 -
用 Go 的 len、unicode/utf8.RuneCountInString 和项目级宽度规则区分字节数、Unicode 码点数与屏幕显示宽度,避免中英文、emoji 和非法 UTF-8 造成长度判断偏差。333 收藏 -
Go 的 //go:embed glob 没有匹配文件时会在构建阶段直接失败。本文从包目录、路径模式、单文件与 embed.FS 的差异出发,给出补文件、改路径和最小复查方法。333 收藏 -
Go select 中加入 default 后,消费者在没有消息时会立即返回,放进无限循环就可能形成高频空轮询。本文说明空转根因,并给出阻塞接收、定时退避、批处理和退出信号的选择边界。332 收藏 -
Go 中 <-chan 是只接收通道,close 只能作用于双向或只发送 channel。本文解释这个编译限制的设计原因,并给出生产者关闭、消费者安全接收的写法。332 收藏 -
讲清 filepath.Rel 返回 .. 时的越界判断,给出跨平台的 Go helper,并说明 filepath.IsLocal 与 os.OpenInRoot 的适用边界。332 收藏 -
解释 Go benchmark.ResetTimer 的正确调用位置,区分准备阶段、计时区间、子基准和并行基准的边界,避免 ns/op 与分配数据被错误污染。331 收藏