Go语言技术文章
-
Go filepath.EvalSymlinks 返回错误时,不要只比较错误字符串。本文用 errors.Is 区分不存在和权限,用 errors.As 读取 PathError 的操作与路径,并说明非目录组件、损坏链接、循环链接等边界。324 收藏 -
Go 的 mime.WordDecoder.Decode 专门解码一个 RFC 2047 encoded-word。本文用最小示例说明 UTF-8、CharsetReader、错误处理,以及它与 DecodeHeader 的输入边界。322 收藏 -
Go defer 会立即求值并保存函数值、接收者和参数,延迟执行函数体。通过日志、耗时、切片和文件关闭示例,说明如何选择入口快照、最终状态与资源绑定。322 收藏 -
在 Go 中,for range 遍历结构体切片时,值变量通常是当前元素的一份复制品。直接修改 item.Name 只会改变这份副本,原切片不会变化。本文用排查清单拆开 range 的赋值语义,并给出索引修改、显式写回和指针切片三种写法。320 收藏 -
用 Go 1.23 的 iter.Pull 把 push-style 迭代器接入一个可复用的 TakeUntil 工具,讲清 next、stop、提前退出和并发边界。316 收藏 -
slices.Delete 的结果看似不稳定,通常来自忽略返回值、共享底层数组、len/cap 误判或并发读写。本文用 Go 示例和排查表说明稳定删除区间、处理尾部引用与隔离数据竞争的方法。315 收藏 -
Go 服务端可以直接调用 r.Referer() 读取请求头中的 Referer;缺失时返回空字符串。本文说明它与 Header.Get 的关系、测试写法、代理和隐私策略造成的缺失边界,以及为什么不能把 Referer 当成认证或安全授权依据。314 收藏 -
bytes.CutPrefix 返回原字节切片的视图。本文展示怎样复用输入工作区、将载荷复制到已有目标空间,以及在跨轮或异步保存时正确建立独立结果。311 收藏 -
Go 双向 TLS 认证中,tls.Config.GetClientCertificate 可以根据服务端的证书请求选择客户端证书。本文说明 CertificateRequestInfo 的筛选信息、回调返回值、错误与空证书边界,以及它和 Certificates 字段的关系。310 收藏 -
ParseRequestURI 面向 HTTP 请求中的绝对 URI 或绝对路径;如果把不带协议的 host/path 当成完整 URL,解析就会失败。本文用 Go 示例区分它与 url.Parse 的适用边界。307 收藏 -
Go testing.T.Failed 返回当前测试是否已经失败,适合放在 t.Cleanup 中做最终诊断或选择性保留现场。本文说明它与 t.Error、t.Fatal、t.Run 返回值、子测试状态和 Skipped 的边界。306 收藏 -
Go encoding/csv 可以用 Reader.Comment 忽略指定格式的注释行,连续分隔符产生的空字段仍会保留为字符串空值。本文给出逐条读取、字段数约束、空白处理和解析错误的生产写法。303 收藏 -
Go encoding/csv.Reader 会自动忽略真正的空行,但只含空格的记录仍可能被读出。本文用一个可调整的空记录判断函数区分空行、空字段和有效记录,并处理 EOF、解析错误与可变字段数。303 收藏 -
Go 默认把接口中的 JSON 数字解码为 float64,超过安全精度时可能改变原始值。本文用 Decoder.UseNumber 保留 json.Number 文本,先用 json.Valid 和格式判断选择 Int64 或 Float64,再处理小数、越界和浮点误差。302 收藏 -
Go mod 中的 replace 相对路径依赖主模块目录和完整工作区,CI 中常因替换目录未检出、嵌套模块选错或目标缺少 go.mod 而失效。本文给出定位命令、仓库布局修复方式与切换模块版本的判断标准。301 收藏