Go语言技术文章
-
解释 Go httptest.ResponseRecorder 为什么常见 200,梳理 NewRecorder 初始值、Write 的隐式状态、WriteHeader 首次生效和 Result().StatusCode 的稳定断言边界。125 收藏 -
Go 的 bytes.Reader 适合从 []byte 创建只读游标。本文用一个可运行示例说明 Read、ReadAt、Seek、Len、Size 和 Reset 的区别,帮助你按顺序读取或按偏移取字节。125 收藏 -
解释 Go 中 nil 指针调用值接收者方法为何会在方法体前 panic,并用最小示例区分值接收者、指针接收者和接口 typed-nil。125 收藏 -
Go 的 DisallowUnknownFields 适合封闭、可控的 JSON 写接口,用来尽早发现拼写错误;面对第三方 webhook 和可扩展 payload 时应谨慎开启。125 收藏 -
介绍 Go archive/tar 识别 GNU 与 PAX 稀疏文件条目的方法,解释逻辑大小、洞区读取行为和 Writer 不支持稀疏写入的边界。125 收藏 -
Go 的 container/ring.Link 可以把一个循环链表整体插入另一个环的锚点之后。本文用完整示例说明拼接顺序、返回节点、nil 处理和同环调用边界。125 收藏 -
Go 的 InsecureSkipVerify 会跳过服务端证书链和主机名校验,短期能绕过握手错误,却把中间人风险带进连接。本文按证书链、私有 CA、ServerName 与 VerifyConnection 的职责,给出更安全的替代方案和上线检查清单。125 收藏 -
sync.WaitGroup 不能在首次使用后复制,因为复制会把计数器、等待者状态和信号量拆成两份。本文用错误示例说明 Wait 提前返回或一直等待的原因,并给出指针传递、go vet 检查和代码审查清单。124 收藏 -
Go fuzz 测试一直产生新输入时,先区分覆盖率探索与输入域失控,再用 seed corpus、长度格式约束和固定 fuzz 预算缩小空间,让失败样本更快复现。124 收藏 -
Go 没有直接限制 embedding 层级的语法。想控制外层 API,应把匿名嵌入改为命名字段并用包装方法转发;窄接口只能限制调用方的静态视图,遮蔽也不会删除底层成员。124 收藏 -
Go os.CopyFS 复制 embed.FS 时,目录按 0o777 创建并受 umask 影响,文件按 0o666 加源文件执行位创建;本文说明权限检查、已有文件和跨平台边界。124 收藏 -
Go HTTP 超时不一定发生在服务端处理阶段,本文用错误链、Client/Transport 参数和 httptrace 阶段日志,定位 DNS、建连、TLS、响应头或响应体读取层。124 收藏 -
exec.Cmd.Cancel 定义 Context 结束时如何通知子进程停止,WaitDelay 则限制取消后的退出等待和进程退出后的管道收尾时间。本文用两个最小实验讲清组合方式、错误判断与常见误区。124 收藏 -
Go 限制上传读取长度时,不要只相信 Content-Length,也不要直接 io.ReadAll。本文用 io.LimitReader 暴露 maxBytes+1 字节,再配合 io.Copy 流式写入临时目标,区分正常文件、超限文件和读取失败。123 收藏 -
Go sync.WaitGroup 的关键不是把 goroutine 等住,而是让 Add、Done 与 Wait 围绕同一批任务形成稳定配对,本文给出可直接复用的写法与排查边界。123 收藏