Go教程技术文章
-
Go 事务业务代码返回 nil 并不代表提交成功。本文用可复用的 WithinTx 函数分别处理 BeginTx、业务执行、Rollback 与 Commit 错误,并说明上下文取消、panic 和 sql.ErrTxDone 的边界。495 收藏 -
Go unsafe.Slice 的长度参数是元素数,不是 C 缓冲区字节数。本文用 cgo 示例说明如何校验指针、换算长度、维持 C 内存生命周期,并避开布局和 Go 指针陷阱。495 收藏 -
讲清 Go json.Decoder 读取连续 JSON 值时如何区分正常 EOF、记录中途截断、语法错误和类型错误,并用 InputOffset 记录可恢复的失败位置。495 收藏 -
Golang · Go教程 | 2个月前 | 标准库 · 泛型 · 资源管理 · 迭代器 · Go教程 · 资源释放 iter.Seq range over function Go泛型迭代器 iter.Pull
Go 1.23 引入的 iter.Seq 让自定义序列可以直接配合 for range,但提前 break 与 iter.Pull 的 stop 处理决定了资源能否及时释放。本文用分页读取与筛选场景拆解 push 迭代器、pull 迭代器和停止边界。495 收藏 -
独立运行 Go 测试二进制时,用 go tool test2json 配合 -test.v=test2json 输出逐行 JSON 事件。说明参数归属、流式解码、测试失败识别及原始日志保存方式。494 收藏 -
介绍Go httptrace识别连接复用的方法,区分Reused、WasIdle与IdleTime,通过共享Transport示例说明HTTP/2、响应体和并发回调的观察边界。494 收藏 -
Go go-echarts/v2 不需要把多个图表硬塞进一个实例。本文用 components.NewPage 创建页面容器,通过 AddCharts 追加独立图表,再设置布局、页面标题和统一输出,最后给出 v1 到 v2 的迁移检查清单。494 收藏 -
Go 解析 key=value 配置时,strings.Cut 会在第一次分隔符处分开字符串,并通过 found 区分未找到分隔符的情况。本文从具体输入出发,处理空值、多处分隔符和错误边界。494 收藏 -
从最终输出类型、读取需求、Grow 的字节语义和 Bytes 的别名边界出发,说明 strings.Builder 与 bytes.Buffer 在 Go 中如何选择。494 收藏 -
Go 的 time.Ticker.Reset 会停止当前节拍并按新周期重新计时。本文用一个动态刷新任务说明 Reset 的调用边界、正数周期校验、慢消费者丢 tick 以及并发读写时应如何组织所有权。494 收藏 -
json.Decoder.Decode 成功一次,不代表请求体只包含一个 JSON 文档。本文用 Token、第二次 Decode 和 io.EOF 判定尾随数据,拆解单文档接口的校验边界与常见误区。494 收藏 -
在泛型函数里拿到 T 的 reflect.Type,不必再构造一个可能带副作用的零值,也不要把接口动态类型误当成泛型参数。本文用 reflect.TypeFor[T]() 对比旧写法,说明指针、接口和 nil 的边界,并给出可验证的类型检查代码。494 收藏 -
WithDeadlineCause 到期后,Err 用于判断统一的超时类别,Cause 用于保留创建时指定的具体原因。本文用最小示例说明两者差异、主动 cancel 边界和兼容注意事项。493 收藏 -
Go 的周期任务不应该靠关闭 ticker.C 退出。本文用 context、time.NewTicker 和 defer Stop 写一个可复用示例,说明停止任务、停止 ticker、通道不关闭以及慢处理和版本边界。493 收藏 -
Go encoding/xml.Decoder 的 Token、Decode 和 DecodeElement 都通过 error 报告解析问题。本文说明如何区分 io.EOF 与真实失败,用 %w 保留错误链,并结合 InputPos、InputOffset 和受控原始缓存补齐排查上下文。493 收藏