Go问答技术文章
-
Golang · Go问答 | 2天前 | 标准库 · Go问答 · encoding/json · JSON解析 · Go encoding/json 流式解析 Decoder.Token json.Delim
面对字段层级不固定、又不适合一次性读入内存的 JSON,Go 的 encoding/json.Decoder.Token 可以逐个读取语法令牌。本文用对象中嵌套数组的例子说明流式游标、json.Delim、dec.More 与提前结束时的错误边界。193 收藏 -
SetMemoryLimit 和 GOMEMLIMIT 都是在约束 Go 运行时内存预算,但它们不是硬性进程上限。本文用一个可复测的小程序说明 GC 频率、HeapReleased 与外部内存的边界,并给出压测和容器部署中的核对方法。473 收藏 -
围绕 Go net.Conn 写入超时排查一个常见误区:SetWriteDeadline 只约束当前连接的 I/O 截止时间,还要正确处理 n、err、缓冲写入和连接复用,才能判断请求是否真正收口。501 收藏 -
解释 Go bytes.Buffer 的 UnreadByte 何时成功、何时返回错误,并用读取游标、最后一次读取和 Reset 场景给出可复现的核对方法。148 收藏 -
Go 的 http.Client 遇到 3xx 响应时会自动跟随重定向,但 CheckRedirect 的返回值、请求头继承和错误处理很容易让调用方误以为请求丢了。本文从一个重定向异常场景出发,分层检查 req.URL、Header 和 ErrUseLastResponse,并给出可验收的修复写法。362 收藏 -
Go 的 time.After 适合一次性等待,但放进高频循环后会不断创建新的计时器,让任务堆积到更难观察的状态。本文从轮询任务出发,解释 time.After 的生命周期,给出可停止的 time.NewTimer 写法,并用计数和取消测试验收修复是否生效。437 收藏 -
Go 的 flag.Func 适合把重复出现的命令行参数交给同一个回调逐次处理,但默认值不会自动触发回调,回调返回错误还会改变 Parse 的结果。本文用可运行示例拆清调用次数、参数顺序与失败边界。120 收藏 -
Go 里 context.WithTimeout 设置的超时可能比预期更早,因为子 Context 的截止时间不会晚于父 Context。本文用父子 deadline、ctx.Done 和 cancel 说明如何定位提前结束,并给出可复查的调用边界。289 收藏 -
Golang · Go问答 | 2天前 | 错误处理 · net/http · Go问答 · HTTP认证 · net/http Request.BasicAuth HTTP Basic Auth Go认证
net/http.Request.BasicAuth 返回的 ok 布尔值用于区分没有 Basic Authentication 与用户名密码为空。本文用请求头样例和可运行测试拆开三种边界,避免把空密码误判成未认证。400 收藏 -
slices.Concat 合并结构体切片时只复制结构体元素值,不会递归复制其中的指针、切片或 map 字段。本文用可运行示例区分元素隔离与引用字段共享,帮助判断修改结果后的影响范围。390 收藏 -
Go 1.22 引入的 slices.Concat 可以按顺序合并多段同类型切片。本文核对它的泛型签名、空输入返回 nil、结果切片与源切片的隔离关系,并给出容量和自定义切片类型的判断方法。444 收藏 -
用 Go 1.23 的 iter.Seq 把回调式迭代接入 range,拆清 yield 返回值、break 提前停止和错误传递的边界。235 收藏 -
解释 filepath.WalkDir 回调返回 fs.SkipDir 时的目录跳过和文件级遍历终止语义,并用可运行示例验证判断顺序。226 收藏 -
Go 的 netip.ParseAddr 能解析普通 IPv6,但带有 %eth0 这类区域标识的地址还要看输入格式与后续用途。本文用最小代码说明 zone 的保留边界、Addr 与 AddrPort 的区别,以及监听和日志场景如何避免误判。146 收藏 -
Go 的 net/http.Header.Get 只返回一个值。本文用可复现的响应头示例说明 Header.Get、Header.Values 与 Header.Add 的关系,帮你判断何时该读取单值、何时必须遍历全部值。155 收藏