Go语言技术文章
-
用 Go embed.FS 把模板目录编译进二进制,再通过 html/template 的 ParseFS 读取渲染,适合希望单文件交付的 Go 服务。122 收藏 -
Go binary 的整数解码应遵循协议字节序,而不是本机端序。通过固定字节与八字节头部示例说明字段宽度、偏移和完整读取,区分短读与端序错误,并解释编码回环为何不等于协议互通。122 收藏 -
Go bytes.Count 用一个整数返回字节子切片的不重叠出现次数。本文说明最小写法、重叠匹配、空分隔片的 UTF-8 码点语义,以及如何区分返回 0 与参数错误。122 收藏 -
Go html/template 解析多个文件或 define 命名模板后,可以用 Templates 遍历关联模板并读取 Name,再用 Lookup 检查某个名称是否存在。本文给出最小示例,并说明 ParseFiles 根名称、命名模板和 ExecuteTemplate 参数不一致时的排查顺序。122 收藏 -
Go 的 golang.org/x/text/unicode/bidi 用 Paragraph 表示一段双向文本:先用 SetString 配置段落,再用 Direction 读取整体方向、用 Order 遍历视觉顺序中的 Run。本文说明混合方向文本的读取边界、原文位置和 Ordering 生命周期。122 收藏 -
Go x/text/width 的 LookupRune 接收一个 rune 并返回 Properties。本文用一个字符检查器演示如何读取 Kind、Wide、Narrow 与 Folded,并说明它与终端显示列宽的区别。122 收藏 -
使用 Go transform.NewReader 配合 GBK Decoder 将旧编码文本转换为 UTF-8。本文澄清包路径,给出有界读取示例,并说明编码来源、解码错误、输入输出上限与业务内容边界。122 收藏 -
Go Request.GetBody 为 nil 时,先区分重定向重放和应用层重试,再用可重复创建 Body 的请求工厂保证每次上传读取同一份数据。122 收藏 -
Go slog Handler的方法允许并发调用。本文以日志封装迁移为例,说明派生对象、共享写入器、原子错误计数与业务字段的边界,给出委托JSONHandler的完整示例和回归场景。122 收藏 -
Go工具链升级后出现编译、测试或运行行为变化时,固定源码和依赖,用新旧工具链建立对照,区分模块声明、兼容默认值与环境差异,并保存可复现的定位记录。122 收藏 -
通过 go env -json 导出指定环境字段,并用 Python 按键读取。说明退出码与 stdout、stderr 的分离,CGO_ENABLED 字符串判断、失败后保存策略,以及配置快照与环境还原的区别。122 收藏 -
Go 日志里遇到换行、制表符、引号或反斜杠时,直接打印 rune 容易让字段边界变得不可读。本文用 strconv.QuoteRune 生成稳定的单引号字符字面量,再比较 ASCII 和图形字符版本,补上无效 Unicode 码点与结构化日志的处理边界。121 收藏 -
长期运行的 Go worker 不应只等待 time.Ticker.C:把 ticker 的所有权交给 worker,用 context 定义退出条件,在退出路径调用 Stop,并根据周期变化选择 Reset 或重建,才能避免 goroutine 与定时任务生命周期失配。121 收藏 -
用 parquet-go 写 Parquet 时,先让 Go 结构体定义行 schema,再按数据量选择 WriteFile 或 GenericWriter。本文给出结构体切片写文件、分批写入 io.Writer、标签配置和失败处理的选择边界。121 收藏 -
用 Go x/text/number 的 Decimal 配合 MinFractionDigits 控制最少小数位,并比较 MaxFractionDigits、Scale 与 Precision 的适用边界。121 收藏