Go语言技术文章
-
Go filepath.IsAbs 只判断路径字符串按当前操作系统规则是否为绝对路径,不访问文件系统。本文说明 Unix 与 Windows 的路径边界,并区分 IsAbs、Abs、IsLocal 和 Clean 的职责。322 收藏 -
Go 的 mime.WordDecoder.Decode 专门解码一个 RFC 2047 encoded-word。本文用最小示例说明 UTF-8、CharsetReader、错误处理,以及它与 DecodeHeader 的输入边界。322 收藏 -
Go defer 会立即求值并保存函数值、接收者和参数,延迟执行函数体。通过日志、耗时、切片和文件关闭示例,说明如何选择入口快照、最终状态与资源绑定。322 收藏 -
Go ast.FilterDecl 不会筛选参数列表中的名称。本文通过最小示例说明其声明过滤范围、原地修改与返回值含义,并区分签名展示和源码参数重命名所需的处理方式。322 收藏 -
http.Server.BaseContext 的字段为 nil 与回调返回 nil 不是一回事:前者使用 context.Background,后者会在服务器开始接收连接前触发 panic。本文按启动时间线拆开这个边界,给出非空 Context 修复写法和回归测试。322 收藏 -
通过任务信封的 Gob 往返示例,区分具体类型登记、顶层接口编码形态、可写解码目标和导出字段,定位接口解码失败与结果为空的原因。322 收藏 -
Go 静态分析中,types.NewMethodSet 对 T 和 *T 返回不同数量并不代表 API 丢失方法,而是值接收者、指针接收者与方法集规则共同作用的结果。本文用排障手册方式拆开判断边界。322 收藏 -
go/doc/comment.Printer 默认会按 DocLink 生成包和符号链接。本文从默认规则开始,演示如何用 DocLinkBaseURL 统一切换文档根路径,再用 DocLinkURL 按包、类型和方法自定义路由,并区分当前包本地锚点与外部包地址。322 收藏 -
Go crypto/ecdh 的 ECDH 调用要求本地私钥与远端公钥使用同一曲线。本文从跨服务故障现场出发,说明 P256 与 P384 为什么不能混用,如何用 Curve() 定位问题,以及如何把曲线约定前移到协议边界。322 收藏 -
Go encoding/csv 的 LazyQuotes 可以放宽未转义引号的解析,但不能证明字段仍然正确。本文用逐条 Read、ParseError、FieldsPerRecord 和业务字段复核建立兼容导入的检查边界。322 收藏 -
Go bbolt 按前缀扫描键时,先用 Cursor.Seek 定位,再用 bytes.HasPrefix 控制边界,并处理 bucket 缺失、子桶项和事务内字节切片生命周期。321 收藏 -
Go cgo.Handle 用整数关联 Go 值,让 C 回传标识后由 Go 取值。同步双文件示例说明 NewHandle、Value、Delete 的职责,以及异步回调和重复释放的风险。321 收藏 -
Go pprof 定位 CPU 热点函数的关键,是先采集能代表真实负载的 CPU profile,再用 go tool pprof 对比 flat、cum、list 和调用关系,最后回到源码行复采确认。321 收藏 -
Go gzip 解压出现校验错误时,优先检查压缩流是否完整收尾、读取是否到达 EOF,以及多成员流和网络截断边界。321 收藏 -
Go RawMessage 二次解析后字段为空,通常要从原始字节、外层 JSON 标签、目标结构体指针和类型匹配四处排查。本文给出动态载荷的定位清单与可复用写法。321 收藏