Go语言技术文章
-
用 Go x/text/encoding/korean 的 EUCKR.NewEncoder 把 UTF-8 韩文转换为 EUC-KR 字节,说明 String、Bytes、Writer 的使用方式与不支持字符的错误边界。352 收藏 -
Go html/template 的 Delims 可以在解析前切换模板动作分隔符。本文用 [[ ]] 示例说明设置时机、Parse 与 Execute 的边界、旧语法表现和多模板集合的处理方式。352 收藏 -
Go 的 strconv 转换失败会返回 *strconv.NumError。本文用 errors.Is 区分 ErrSyntax 与 ErrRange,再用 errors.As 读取 Func、Num 和 Err,说明如何在接口或配置入口保留错误原因。352 收藏 -
Go 空 FieldList 与 nil 都可以安全得到 0,但 len(List) 不等于实际参数或字段数量。本文拆开 nil 接收者、空列表、匿名字段和同一 Field 多个名字的计数语义,并给出 AST 遍历中的统一写法。352 收藏 -
Go types.Selection.Recv 保留选择表达式的接收者类型。通过嵌入方法示例区分选择起点、声明签名和结果类型,并说明 Index、Kind 与缺失记录的处理。352 收藏 -
解释 Go csv.Reader 读取带 UTF-8 BOM 的 CSV 时第一列出现隐藏字符的原因,并给出在输入流外层安全剥离 BOM、保留普通 UTF-8 内容和覆盖短输入边界的做法。352 收藏 -
通过配置赋值案例说明 Participle 状态词法器如何区分引号内外规则、保留文本与转义片段,并用结构体语法约束闭引号及处理字符串值。351 收藏 -
Go time.Time 写入 JSON 时,先用 In 固定业务时区,再按 RFC3339 或字段级自定义 MarshalJSON 输出稳定格式。351 收藏 -
RegisterOnShutdown 适合快速发出协议关闭通知,不应在回调里等待清理完成。本文用 channel、WaitGroup 和超时上下文组织可控的异步退出流程。351 收藏 -
Go 项目同时存在 go.mod、vendor 和 CI 构建脚本时,使用 -mod=vendor、-mod=mod 与 -mod=readonly 可以明确切换依赖来源。本文说明自动模式、同步 vendor、CI 固定参数和发布前检查清单。351 收藏 -
用 Go execution trace 采集短窗口运行时事件,结合 go tool trace 观察 goroutine 调度、阻塞、系统调用与 GC,并明确它和 pprof 的分工。351 收藏 -
Go transform 的 Span 可识别无需改写的字节前缀。本文用 width.Fold 说明前缀保留、ErrEndOfSpan、缓冲区处理和状态延续,并解释完整输入与流式输入的区别。351 收藏 -
计算接近零的 e^x-1 时,直接写 math.Exp(x)-1 可能丢失有效数字。本文用一个小型增长率场景说明消减误差,再给出 math.Expm1 的用法、特殊值边界和选择清单。351 收藏 -
从 BitsSequence、BitsMachineID 和 TimeUnit 三个参数出发,计算 Go sonyflake 的单窗口容量、理论发号速率与生命周期,给出配置示例和参数取舍方法。351 收藏 -
Go range 遍历结构体切片时,第二个变量通常是当前元素的值副本,直接修改它不会回写原切片。本文用一个小型批处理示例说明原因,并比较按索引回写、指针遍历和只读副本的适用边界。351 收藏