Go问答技术文章
-
Go pem.Decode 找到 PEM 块后会返回结束标记之后的 rest;本文用前导空白、多个块和尾部文本说明消费边界,并给出可复用的循环读取写法。491 收藏 -
Golang · Go问答 | 3星期前 | 并发 · channel · select · goroutine · go · go并发通信 Go channel发送阻塞 channel缓冲区满 select非阻塞发送
Go channel 是否会阻塞,关键看发送时有没有匹配接收者,或有缓冲 channel 是否仍有空位。本文区分 nil、无缓冲、有缓冲和已关闭 channel,并用 select 写出可控的非阻塞发送。491 收藏 -
Go 的 net/http/pprof 默认注册到 DefaultServeMux;业务服务使用自定义 ServeMux 时,需要显式把 Index、Handler、Profile、Symbol 和 Trace 注册到诊断 mux,再交给独立 HTTP Server。491 收藏 -
Go POSIX 与默认正则既有语法范围差异,也有最左最先与最左最长的选择差异。本文通过原创对照示例说明 Compile、CompilePOSIX、Longest 的取舍,并提醒捕获分组和并发配置边界。491 收藏 -
Go 字符串转 []byte 时,普通转换会复制数据,unsafe.StringData 与 unsafe.Slice 则可能创建只读别名。本文说明别名写入、append、uintptr 中转、空字符串和长度边界的生命周期风险,并给出安全的封装与选择建议。491 收藏 -
Go slog 的 JSON 时间格式取决于字段来源、时区与布局。通过 ReplaceAttr 将内置日志时间改为 UTC 固定毫秒字符串,并区分业务时间、分组字段、零值记录及采集端类型兼容。491 收藏 -
regexp.FindReaderIndex 返回的是 UTF-8 字节偏移,不是字符序号。本文解释中文文本中的位置差异,并给出保留原文后把字节区间换算为 rune 位置的方法。491 收藏 -
从 go env 确认 GOMODCACHE 实际路径,区分 GOPATH/pkg/mod 与 GOCACHE,再用父目录、属主和最小写入测试定位权限错误,并给出迁移与复查方案。490 收藏 -
从 context 没有传递、HTTP 请求未绑定 context 和自定义等待未监听 Done 三个角度,说明 Go 超时后下游仍在执行的原因与修正方式。490 收藏 -
RuneError 不能单独代表解码失败:DecodeRuneInString 返回 RuneError 且 size 为 1 时,才表示非空输入的 UTF-8 编码非法;合法的 U+FFFD 通常占 3 个字节,空字符串则返回 size 为 0。490 收藏 -
Go riff.Next 返回的块 Reader 会在下一次 Next 后失效。本文解释共享读取状态,给出带单块、总量和数量预算的数据复制函数,并说明并发与 LIST 嵌套读取的边界。490 收藏 -
Doublestar 默认会把静态前缀不存在视为无匹配结果。本文区分空结果、ErrBadPattern、ErrPatternNotExist 与普通 I/O 错误,并给出 WithFailOnPatternNotExist 的迁移写法。490 收藏 -
Go errors.Join 会忽略真正 nil,全部成功返回 nil。通过可选检查示例解释混合输入、错误成员识别及带类型空指针的返回陷阱,并给出聚合错误的适用约定。489 收藏 -
iter.Pull 把 push 迭代器转换为 next 与 stop 两个函数。只要没有消费到序列末尾,就必须调用 stop;本文从提前返回、并发误用和 goroutine 观测三个方向定位残留。488 收藏 -
Go go-toml 编码后空值仍出现,先检查 toml 标签而非 json 标签。通过备注与重试次数的小型导出器,说明空字符串省略和有效零值保留的不同契约。488 收藏