Go问答技术文章
-
go-mp3 的 Decoder.Length 统计的是解码流总字节数,不是 MP3 压缩文件大小。本文说明可寻址输入中的 Length、非 io.Seeker 输入的 -1、Read 累计方式,以及 16 位小端双声道输出的单位边界。406 收藏 -
Golang · Go问答 | 15小时前 | 标准库 · TCP · Go问答 · Go keepalive net.TCPConn KeepAliveConfig SetKeepAlive SetKeepAlivePeriod TCP排障
排查 Go net.TCPConn 的 KeepAlive 参数未生效时,先区分开关、空闲时间、探测间隔与应用层超时,再核对 TCPConn 类型、API 返回错误、Dialer 或 ListenConfig 的配置来源和操作系统边界,并给出旧版本与 Go 1.23+ 的正确写法。406 收藏 -
Go DNS 解析在本机正常、容器里失败,通常不是 Go 随机改变了结果,而是两侧的 resolv.conf、hosts、网络命名空间或解析器路径不同。本文给出一套从输入配置到 net.Resolver 的排查与修复路线。405 收藏 -
Go 1.25 的 CrossOriginProtection 可以拦截跨源写请求。本文说明如何用 SetDenyHandler 统一返回 JSON 拒绝响应,并厘清安全方法、Origin、Sec-Fetch-Site 与日志边界。405 收藏 -
gopacket 的 ErrorLayer 不是“截断”这个单一状态,而是解码链在某个位置失败后的错误层。本文区分 CaptureInfo 长度、Metadata().Truncated、协议长度字段和未知解码器,给出一套可落地的排查写法。405 收藏 -
用 Go io.ReadFull 读取固定长度协议帧,区分正常 EOF、半包 ErrUnexpectedEOF 与底层 I/O 错误,并给出长度校验和循环读取示例。405 收藏 -
transform.Chain 只负责按顺序组合转换器,不会自动扩展调用方提供的 dst。本文用 x/text/runes 和 transform 的例子说明 ErrShortDst、nDst、nSrc 的正确处理,以及 transform.Writer 在 Close 时刷新尾部数据的原因。404 收藏 -
Gonum optimize 的 initX 会改变搜索起点和后续路径。本文用双谷目标函数说明局部解差异的来源,并给出多起点、尺度检查和结果复查方法。404 收藏 -
go mod tidy 失败时,先按模块路径、版本选择、代理下载和本地文件四类原因分流,再用 go list、go env 和文件 diff 缩小范围。本文给出可重复的排查命令,以及修复后的干净回归方法。404 收藏 -
Go 工具链在目录、终端和 CI 中选择不同版本时,如何核对 PATH、GOTOOLCHAIN 与项目声明,控制执行来源并记录实际版本。404 收藏 -
解释 Go string 的字节长度、rune 字符边界和显示宽度差异,给出安全截断中文文本的实现与上线检查方法。403 收藏 -
go test 看到旧输出或失败用例像是没有重新执行时,先识别 cached 标记,再用 -count=1、go clean -testcache 和 GODEBUG 判断到底是测试结果缓存、构建缓存还是 vet 阻止了运行。403 收藏 -
Go json.Decoder.UseNumber 只改变解码到 interface{} 时的数值类型,不是 Marshal 的全局开关。本文拆开 float64、json.Number、string 与 RawMessage 的边界,说明何时能保留数字字面量、何时已经无法恢复原始表示。403 收藏 -
os.Executable 返回的是启动当前进程的可执行文件路径,但符号链接、文件替换和部署变更都会影响它是否仍指向预期文件。本文用最小 Go 示例说明错误处理、EvalSymlinks 与资源目录选择。403 收藏 -
Go Flock 的锁文件是协作路径,不是占用状态本身。本文区分磁盘文件、内核锁和 Flock 实例,说明 Unlock、Locked、TryLock、Stat 的用途,以及异常退出和跨平台场景下的判断边界。403 收藏