Go问答技术文章
-
从 Go pprof goroutine profile 的等待状态和栈顶函数入手,区分通道、锁、网络、定时器与可运行协程,并说明何时切换到 block、mutex profile 或 trace。330 收藏 -
解释 Go json.RawMessage 的字节所有权边界,区分 Unmarshal 已复制和直接切片转换未复制的场景,并给出长期保存原始 JSON 的安全写法。330 收藏 -
Go 的 io.Reader 可以在一次 Read 中同时返回 n > 0 和 io.EOF。正确顺序是先处理 buf[:n],再判断 err;否则会丢掉输入流最后一段有效数据。本文给出通用循环、错误优先级、0,nil 边界与标准库替代方案。330 收藏 -
Go flag.FlagSet.Parse 遇到 -- 后会停止解析选项,后续参数通过 Args、Arg 和 NArg 读取。本文用最小示例解释位置参数被误判的原因,以及命令包装时如何安全透传参数。330 收藏 -
Go test -json 输出是换行分隔的 JSON 事件流。本文按 Action、Package、Test 和 Output 等字段拆解测试事件、构建事件与输出拼接方法,并给出可直接接入 CI 的 Go 解析示例。330 收藏 -
Go embed 报 pattern 没有匹配文件,通常不是资源不存在,而是 pattern 相对目录、文件名大小写、扩展名或目录可见性与实际结构不一致。本文用最小示例拆解定位方法。330 收藏 -
Go WebSocket 处理器同时遇到 HTTP 错误响应、握手失败和连接写入失败时,最容易出现重复写响应或错误归因混乱。本文按升级前、升级中和升级后三个边界,说明 http.Hijacker、Upgrader 和 ResponseWriter 的处理顺序。330 收藏 -
GOTOOLCHAIN=auto 会结合 go.mod 或 go.work 的版本要求选择工具链。本文拆开 local、auto、path 与 name+auto/name+path 的边界,说明启动选择、依赖触发切换和排查命令。330 收藏 -
CloseIdleConnections 只清理 Transport 中已经空闲的 keep-alive 连接,不会打断正在使用的请求。文章用发布切换场景说明它与 Transport 复用、响应体关闭和灰度验证的边界。329 收藏 -
filepath.Clean 只处理路径字符串,不解析软链接、权限和真实文件系统状态。本文按路径生命周期解释 os.Root 仍会拒绝访问的原因,并给出可移植的校验与错误处理写法。329 收藏 -
Go 1.24 为 crypto/x509 增加证书策略验证后,证书链能建立并不代表满足指定策略 OID。本文从版本、Policies 字段、CertificatePolicies、策略图和中间证书集合五个方面定位失败原因。329 收藏 -
Go slices.CompactFunc 会在压缩连续重复项后清零尾部元素。本文区分尾部引用与整个 backing array 的生命周期,给出直接接收返回值、Clone 脱离旧数组和 Clip 的使用边界。329 收藏 -
CGO_ENABLED=0 会让 cgo 构建约束失效。本文从环境确认、文件筛选到纯 Go 实现配对,说明如何定位“找不到实现”并稳定检查两条构建分支。329 收藏 -
Go pprof HTTP 地址打开为空时,先区分服务、路径和 mux 三层问题。本文从 net/http/pprof 的匿名导入讲起,说明 DefaultServeMux 与自建 ServeMux 的注册差异,并给出目录页、heap 和 CPU profile 的排查顺序。329 收藏 -
crypto/rand.Text 返回的不是任意字母数字串,而是基于 RFC 4648 Base32 的密码学安全文本。本文从官方实现拆开字符集合、长度与自定义字符表的边界。329 收藏