Go语言技术文章
-
Windows-1252 旧文件不能直接当作 UTF-8 读取。本文用 golang.org/x/text/encoding/charmap 的 Decoder 说明内存转换、流式读取和写回旧编码时的字符边界。364 收藏 -
Go x/text/currency 的 ParseISO 用于解析三字母 ISO 4217 货币代码。本文说明如何处理格式或未知代码错误,并区分 Unit、Amount、Formatter 与 MustParseISO 的职责边界。450 收藏 -
Go 用 collate.New(language.German) 创建德语文本排序器。通过完整示例说明语言标签、稳定排序与原切片保护,并解释比较等价、并发独占和配置记录的使用边界。259 收藏 -
Go x/text/cases 的 Title 可以结合语言标签生成标题式大小写。本文用普通标题、NoLower、String/Bytes/Transform 和 Caser 并发边界说明怎样选参数与避免误用。318 收藏 -
io.LimitReader 读到上限后返回 EOF 是设计出来的正常结束信号,不是超限报错。本文从 Reader 契约出发,说明如何用 limit+1 的策略识别输入是否真的超过上限,并比较 LimitReader、ReadFull 与 ReadAtLeast 的适用边界。334 收藏 -
Rows.Columns 返回列名顺序,Rows.Scan 按位置写入目标地址。本文解释固定列与动态列的对应规则,并处理 NULL、Close 和 Err 的常见边界。143 收藏 -
Go url.JoinPath 接收已转义路径元素,保留百分号编码并不异常。通过 Path、RawPath、EscapedPath 的区别和原始名称构造示例,说明斜杠、点段与重复转义的处理方法。343 收藏 -
atomic.Pointer[T] 中的 T 决定了它保存的指针类型以及 Store、Load、Swap 和 CompareAndSwap 的参数与返回值。本文解释 Go 为什么要求指针类型一致,并给出共享配置对象的安全用法与复制、可变性边界。306 收藏 -
bytes.Buffer.WriteByte 的 error 固定为 nil 并不是漏掉了错误处理,而是为了匹配 bufio.Writer 的接口形状。本文说明单字节写入、字符写入与容量边界的区别。402 收藏 -
regexp.FindReaderIndex 返回的是 UTF-8 字节偏移,不是字符序号。本文解释中文文本中的位置差异,并给出保留原文后把字节区间换算为 rune 位置的方法。491 收藏 -
Go json.Decoder.InputOffset 返回的是最近成功返回 token 之后的输入字节偏移。本文用连续 JSON 流示例说明它与 SyntaxError.Offset、Buffered 的区别,并演示如何把字节位置转换为行列诊断信息。113 收藏 -
Go hash/maphash 的 Seed 决定 Hash 使用的哈希函数。本文说明怎样用 SetSeed 让多个 Hash 实例使用同一个进程内 Seed,如何用于并发计算,以及调用时会清空已有输入的边界。275 收藏 -
本文说明 Go http.Request.BasicAuth 的三个返回值,演示如何区分认证头解析成功与账号校验通过,并整理 401、HTTPS、WWW-Authenticate 和日志脱敏边界。371 收藏 -
Go reflect.Value.FieldByIndex 接收 StructField.Index 这样的字段路径,可读取嵌套或匿名嵌入结构体中的目标字段;遇到可能为空的指针时,应使用 FieldByIndexErr 获取可处理的错误。458 收藏 -
Go 的 TLSHandshakeTimeout 只负责 HTTPS 客户端 TLS 握手阶段的等待时间。本文用一个自定义 Transport 拆开连接、握手、响应头和响应体的超时边界,并说明如何根据错误现象选择排查方向。194 收藏