Go问答技术文章
-
Go channel 缓冲区只能吸收暂时的速率差,不能提升消费者吞吐量。本文从到达速率、消费速率、发送阻塞和队列积压出发,说明如何选择一个小而有界的容量,并给出观察代码与决策表。427 收藏 -
Go http.Request FormValue 会隐式解析表单并忽略错误,导致空字符串掩盖正文损坏或字段缺失。本文给出 ParseForm、ParseMultipartForm、PostForm 与错误校验的清晰边界。129 收藏 -
Go net.Buffers.WriteTo 返回的 n 可能小于总字节数。本文从官方实现的消费语义出发,说明如何记录基线、区分合法错误与违反 io.Writer 契约的短写,并安全处理剩余数据。196 收藏 -
把 sync.WaitGroup.Add 放进新 goroutine,可能让 Wait 提前返回,也可能触发计数为负或 Add 与 Wait 并发的运行时 panic。本文用最小结构说明计数边界、批量任务写法和 go vet 检查方式。325 收藏 -
Go 反射设置字段失败,通常不是 Set 方法本身的问题,而是 Value 不是可寻址值、没有用 Elem 解引用指针,或字段未导出。本文用最小结构体示例拆开 CanSet 的判断顺序,并给出可复用的安全设置入口。264 收藏 -
说明 math/bits.Len64 返回有效位数而不是最高位下标,覆盖零值边界、下标换算、uint64 类型保留和常见误用。430 收藏 -
Go regexp.Compile 返回可处理的错误,MustCompile 失败会 panic。本文按源码常量、运行时输入和热更新配置拆开选择边界,并给出保留旧规则的处理方式。298 收藏 -
Go YAML 配置转 JSON 后出现数字或布尔类型差异,通常来自 YAML 解码目标与 JSON 再解码到 any 的默认映射。本文用最小复现定位变化层,并给出结构体、UseNumber 与 RawMessage 的修正方式。104 收藏 -
Go 中 bytes.Equal 和 string == 都是在比较底层字节序列,但 []byte 不能直接做内容比较,nil 与空切片、UTF-8 和 Unicode 规范化又有不同边界。本文用最小例子说明如何选对比较方式。337 收藏 -
Go JSON 流式解码末尾等待,常因混淆容器结束和 Reader EOF。本文用原创数组与连续值示例解释 More、Token、写端关闭、截断错误和读取截止时间。273 收藏 -
multipart 上传里的 filename 是客户端元数据。本文说明 Go 解析器会做哪些路径处理,以及怎样把展示名、服务端存储名、大小限制和覆盖保护分开设计。105 收藏 -
Go HTTP Cookie 是否发送,不只取决于 Cookie 名称,还取决于请求主机和路径。本文用 cookiejar 解释 Path、Domain 的匹配边界,并给出最小排查示例。178 收藏 -
Go HTTP Range 请求返回 200,可能因处理器未实现范围响应,也可能是 If-Range 失配后的正常回退。通过原创 ServeContent 示例讲清请求条件、响应字段、续传交互与代理压缩边界。500 收藏 -
net.ParseIP 返回可变语义的 net.IP 字节切片,失败时返回 nil;netip.ParseAddr 返回可比较、不可变的 netip.Addr 和 error,并支持 IPv6 zone。本文按兼容旧接口、集合去重、错误处理和 IPv4 表示说明两者差异与迁移边界。295 收藏 -
从包依赖、包级变量依赖和源文件顺序三层解释 Go init 函数的执行顺序,并给出排查隐藏初始化依赖与改为显式 Setup 的方法。218 收藏