Go问答技术文章
-
讲清 Go http.DetectContentType 的前512字节取样边界、短文件处理、application/octet-stream 回退,以及上传文件取样后如何复位游标。277 收藏 -
Go mime.WordEncoder.Encode 会把需要编码的中文主题或显示名转换成 RFC 2047 encoded-word;ASCII 普通文本则保持原样。本文说明 QEncoding、BEncoding、字符集和邮件头组装边界。283 收藏 -
很多人会把 io.PipeReader.CloseWithError 的方向写反:生产者异常应由 PipeWriter.CloseWithError 传给消费者,读端关闭则用 PipeReader.CloseWithError 让写端退出。本文用最小示例说明自定义错误、EOF、主动取消和首个关闭错误生效等边界。180 收藏 -
Go hash.Hash.Sum 会把当前摘要追加到传入切片末尾,不会覆盖已有前缀,也不会改变哈希状态。本文说明 dst、len、cap 与 Size 的关系,并给出安全的摘要追加写法。364 收藏 -
Go filepath.WalkDir 默认不会进入目录中的符号链接,这不是遍历失败,而是标准库刻意定义的边界。本文用最小目录树复现现象,再说明怎样读取链接本身、解析目标,并为显式递归补上循环保护。217 收藏 -
Go ascii85.NewEncoder 可能暂存不足四字节的尾块。本文解释 Write 与 Close 的职责,给出完整编码示例,并说明错误处理、外层缓冲和消息边界。398 收藏 -
用 net/http.CrossOriginProtection 保护状态变更接口时,如果健康检查使用非安全方法,可用 AddInsecureBypassPattern 配置精确的例外模式。本文说明方法匹配、直接匹配、冲突和默认拒绝边界。459 收藏 -
用最小示例拆开 Go os.Root 的根目录与相对名称,解释绝对路径、空路径、.. 越界和符号链接为什么会失败,并给出保留 PathError 的修复写法。301 收藏 -
区分 Go gosym.LineToPC 的文件键缺失与源码行无地址,给出保留错误类型的诊断代码,并说明源码版本、路径映射和近似定位的处理方式。415 收藏 -
Go 的 net.IPMask.Size 返回前导 1 的数量和掩码总位数。本文用 IPv4、IPv6、/0 与非连续掩码对照,说明怎样准确判断连续 CIDR 前缀,避免把合法零前缀误判为错误。424 收藏 -
用最小 Go 程序复现 os.OpenFile 的权限差异,解释 O_CREATE、perm、umask 与已有文件权限之间的关系,并给出需要显式 Chmod 时的处理方式。363 收藏 -
RawValue 的 FullBytes 非空时,Marshal 优先使用整段编码,修改 Bytes 不会自动使旧编码失效。本文用 OCTET STRING 字节对照展示问题,给出清空 FullBytes 与构造新值两种写法,并说明切片共享、基准方法和嵌套数据限制。325 收藏 -
Go 的 net.Resolver 可能在纯 Go DNS 解析和系统 cgo 解析之间走不同路径,因此同一域名会出现地址顺序、搜索域或错误表现差异。本文用 PreferGo、GODEBUG=netdns 和可控 Dial 构造最小复现,帮助定位解析器选择边界并写回归测试。441 收藏 -
Go 经过 HTTP 代理访问 HTTPS 时,代理需要的字段必须放在 CONNECT 握手请求中。本文区分 ProxyConnectHeader、GetProxyConnectHeader 与目标请求 Header,说明静态配置、动态回调、代理认证和错误边界。453 收藏 -
ELF 的 NOBITS 节可以有非零逻辑 Size,却没有对应文件内容。本文给出按节类型分支的 Go 读取器,区分正常空节、无文件内容与读取失败,并说明大小预算、资源关闭及旧代码迁移注意事项。284 收藏