Go问答技术文章
-
从 BitsSequence、BitsMachineID 和 TimeUnit 三个参数出发,计算 Go sonyflake 的单窗口容量、理论发号速率与生命周期,给出配置示例和参数取舍方法。351 收藏 -
Go range 遍历结构体切片时,第二个变量通常是当前元素的值副本,直接修改它不会回写原切片。本文用一个小型批处理示例说明原因,并比较按索引回写、指针遍历和只读副本的适用边界。351 收藏 -
Go strings.Trim 的第二个参数是字符集合,不是完整子串。本文用边界示例说明 Trim、TrimPrefix、TrimSuffix 与 TrimSpace 的区别,避免裁剪协议前缀和业务标记时误删内容。350 收藏 -
go mod verify 检查本地模块缓存是否仍与 go.sum 记录一致,而 go.sum mismatch 是下载或校验阶段发现模块哈希不匹配。本文按校验对象、缓存边界和排查命令拆开说明。350 收藏 -
Go http.Transport 设置 DisableKeepAlives 后吞吐下降,通常是连接复用被关闭,重复承担建连、TLS 握手和连接调度成本。本文解释它与 TCP keepalive 的区别,并给出复用、限额和清理空闲连接的配置取舍。350 收藏 -
Go 的 initialization cycle 不是运行时偶发错误,而是包级变量的依赖无法排出合法初始化顺序。本文用直接引用、函数体传递引用和三种拆环方案说明如何定位与修复。350 收藏 -
Go 文件扫描中,os.Stat 会跟随符号链接返回目标对象;需要识别链接本身时应改用 os.Lstat,并结合 ModeSymlink、错误处理和业务决策选择正确的 API。350 收藏 -
Go ServeMux 在模式互相重叠且谁都不更具体时会在注册阶段 panic。本文用请求集合规则解释路径变量冲突、定位方法、重构策略与测试边界。350 收藏 -
讲清 Go heap profile 中 inuse_space 与 alloc_space 的统计口径、适用症状、增量采集方式和误判边界,帮助区分内存留存与分配抖动。350 收藏 -
Go workspace 模式下 go.mod 的本地 replace 看似失效,通常是父目录 go.work 已被自动启用、工作区 replace 优先级更高,或版本限定没有匹配构建列表。本文给出定位和修复方法。350 收藏 -
Go 里 os.Open 返回成功并不代表后续 File.Read 一定成功。本文按 Open、Read、Close 三个阶段拆开权限错误,使用 PathError、errors.Is 和 os.IsPermission 定位真正失败的操作,并给出不会覆盖主错误的写法。350 收藏 -
Go 1.27 的 response file 解析属于 compile、link、asm、cgo、cover、pack 等底层工具,不是 go build 外层任意参数的通用语法。带空格的参数必须按 GCC-compatible 规则用单双引号包住,并先确认到底是哪一层在解析。350 收藏 -
Go select 同时命中多个 case 时不会按源码顺序固定执行,而是在可通信的 case 中做均匀伪随机选择。本文用最小示例解释规则,并给出优先级、取消和测试的确定性处理方式。349 收藏 -
从 ns/op、B/op 和 allocs/op 三个指标出发,解释 Go 小对象分配、size class 与 tiny allocator 对基准测试解读的影响,并给出可重复的对照方法。349 收藏 -
big.Int.SetBytes 的契约是把输入解释为无符号大端整数,因此不会读取符号位。需要负数时,应由协议明确符号字段,或按固定字节宽度自行解析二进制补码。349 收藏