Go问答技术文章
-
Go 的 nil map 可以读取、计算长度和遍历,但不能直接写入。本文用一个小型索引示例拆开遍历、初始化和写入边界,说明 make 应该放在哪里,以及空输入时怎样保持行为一致。321 收藏 -
Go 反向代理中,URL.Host 决定连接哪个上游,Request.Host 决定发送哪个 Host 头。本文说明服务端读取、客户端转发、端口和安全校验的边界。392 收藏 -
Go map 的 range 顺序未指定,不能直接依赖遍历结果。本文用一个小型标准库示例收集 key、排序后回查 map,并说明按 value 排序时如何用 key 处理相同值,覆盖 nil map 与并发边界。185 收藏 -
Go 切片的 append 是否改写原数据取决于容量和底层数组共享关系。本文结合 slices.Clone 说明如何建立独立写入副本,以及浅复制、nil 和空切片的边界。136 收藏 -
判断 Go append 是否更换底层数组,先比较追加量与剩余容量,再在非空、相同起点的整数切片中观察元素地址和修改影响。文中给出容量充足与不足的对照示例,并区分限制容量与复制。346 收藏 -
Go bytes.Buffer Grow 会预留后续写入所需的容量,但不会直接增加 Len。本文用已知长度和未知长度两种场景说明如何减少重复扩容,并梳理负数、过大参数、Reset 复用与并发访问边界。246 收藏 -
Go 接口中的 nil 指针不一定等于 nil 接口。本文用最小代码对比 typed nil 的成因,并给出 error 返回、调用方检查、errors.Is 与 errors.As 的安全处理清单。316 收藏 -
Go 接口里放入 typed nil 指针后,接口本身可能不等于 nil;comma-ok 断言成功也不代表结果指针可用。本文用 T/V 两层模型和边界封装说明如何排查与处理。416 收藏 -
Go net.Pipe 没有内部缓冲,读写可能一直等待对端动作。本文说明怎样设置 deadline,并用 errors.Is、net.Error 和关闭错误区分超时、对端关闭与其它网络错误。294 收藏 -
rtreego 最近邻比较查询点到 Bounds 矩形的最短欧氏距离。通过两个矩形说明它与中心距离、真实几何距离的区别,以及候选重排和返回值的局限。250 收藏 -
对比Sonyflake整数、8字节编码与UUID的16字节及标准文本表示,给出Go往返转换函数,并说明数据库驱动、JSON数值精度和不同标识类型的接入边界。277 收藏 -
Go beep 的采样率转换用于让源流适配播放设备,修改播放速度则通过 ResampleRatio 或 SetRatio 改变流的消费密度。本文对比 Format、Resample、ResampleRatio 和 SetRatio 的职责与选择边界。482 收藏 -
llrb 依赖 Less 定义的稳定排序关系。通过值快照任务索引说明原地改键为何影响检索,以及旧键删除、新键插入、辅助表和并发更新的责任。288 收藏 -
GoLLRB 的遍历方法不是简单地把升序改成降序:AscendGreaterOrEqual 包含 pivot,AscendLessThan 排除 pivot,AscendRange 使用大于等于下界且小于上界的闭开区间,DescendLessOrEqual 则按降序包含 pivot。本文用一组可复用的判断表说明边界和回调停止语义。383 收藏 -
Go llrb 的 ReplaceOrInsert 依据 Item.Less 的排序等价判断是否替换,不比较结构体整体值或指针地址。本文用业务键示例说明返回值、Less 契约与可变字段边界。412 收藏