Go语言技术文章
-
Go Expr 注册自定义函数时,可以用 expr.Function 提供实现回调,再用函数类型声明参数与返回值,让表达式的类型错误在 Compile 阶段暴露。本文给出可复用的规则示例,并区分编译错误、运行错误与正常业务 false。106 收藏 -
go-toml/v2 可以把 TOML 的 [[servers]] 表数组直接解码到 Go 的 []Server。本文从结构体标签、Unmarshal、流式 Decoder、严格未知字段和 DecodeError 几个边界,整理一套可直接复用的写法。106 收藏 -
本文用 Go 标准库说明 Server.ConnContext 与 Request.Context 的关系,给出连接级信息注入、处理器读取、连接复用和请求取消的最小写法与边界。106 收藏 -
Go 1.23 的 iter.Seq 可以直接用于 range 函数。本文从 yield 的返回值出发,说明 break 怎样提前停止消费、迭代器怎样响应 false,以及自然结束、单次迭代和错误边界。106 收藏 -
B.Loop 只负责迭代与计时,不会恢复循环外可变状态。切片长度、容量、map 内容或缓冲区会跨轮累积,导致每次操作不再等价。本文用可运行示例区分新建成本与复用成本,并说明重置是否计时。105 收藏 -
Go text/template 自定义函数时,关键是先用 Funcs 注册,再让函数返回值或值加 error。本文用一个带业务校验的示例说明 Parse、Execute、errors.As 和部分输出边界。105 收藏 -
用 Go 的 signal.NotifyContext 把中断和终止信号接到根 context,统一驱动服务退出;本文说明 ctx.Done、defer stop、context.Cause 以及 SIGTERM、os.Kill 的边界。105 收藏 -
Go big.Rat 从字符串解析并保留精确计算值,用 RatString 无损保存、SetString 恢复;本文给出完整示例,说明格式限制、显示舍入与对象副本边界。105 收藏 -
使用 Go 1.25 的 sync.WaitGroup.Go 启动并发任务时,怎样让每个闭包拿到独立参数?本文从局部副本、函数参数、值对象和指针风险说明安全写法。105 收藏 -
Go 按指定时区查询某一天,需要用 time.Date 构造当天与次日的日期边界。本文结合日期筛选输入、完整 Go 示例和左闭右开判断,说明时区显示、夏令时、无效日期与重复午夜的适用限制。105 收藏 -
Go标准库flag可通过自定义Value累积同名参数。本文实现顺序保留的字符串切片类型,说明Set调用、零值String、FlagSet错误处理与参数终止边界。104 收藏 -
Go goroutine 泄漏不能靠单次数量下结论。本文给出受控 pprof 端点、基线与增量样本、debug 文本栈和负载记录的组合方法,用持续增长堆栈定位阻塞点并完成修复复测。104 收藏 -
用 Go 1.24 的 os.OpenRoot 建立插件目录边界,通过 Root 方法和 Root.FS 读取相对文件,处理路径遍历、符号链接、资源关闭及挂载点等实际限制。104 收藏 -
用 Go os.CreateTemp 创建临时文件时,创建、写入、关闭和删除是四个不同责任。本文给出一套保留原始错误、无论成功失败都清理文件的实践写法。103 收藏 -
Go 1.27 的可移植 simd 包在 CPU 不支持 SIMD 时会使用纯 Go 仿真实现;部分能力不足时默认降到可用向量宽度或仿真,但强制宽度可能触发 panic。103 收藏