Go语言技术文章
-
Golang · Go问答 | 3星期前 | 网络编程 · https · Go问答 · tls Go 证书校验 RootCAs VerifyConnection InsecureSkipVerify
Go 的 InsecureSkipVerify 会跳过服务端证书链和主机名校验,短期能绕过握手错误,却把中间人风险带进连接。本文按证书链、私有 CA、ServerName 与 VerifyConnection 的职责,给出更安全的替代方案和上线检查清单。125 收藏 -
math/big.Int.FillBytes 会把整数的绝对值写入调用方提供的字节切片;切片过短时高位会被截断。本文用 BitLen 预估容量,在固定宽度字段写入前拒绝不安全目标,并说明负数、零值和缓冲区复用边界。125 收藏 -
Go HTTP 客户端拿到响应后,Body 的读取程度和关闭时机都会影响连接复用。本文按完整读取、只看状态码和有限排空三种场景说明如何选择,让 defer、读取上限与 HTTP/1 复用策略各司其职。125 收藏 -
把 Go 结构化输出测试从脆弱的长字符串断言迁移到 golden 文件:先稳定序列化,再用 -update 显式更新基线,最后输出可审阅的差异,避免测试被悄悄改绿。125 收藏 -
Go net/http.Header.WriteSubset 可以按排除表把请求头写成线格式,但排除键不会自动规范化。本文用一个转发场景讲清 Header map、排除表、Request.Host 与写出错误的边界。125 收藏 -
Go RWMutex 并不是让新读者无限插队:写者一旦等待,新的 RLock 会被挡住。写锁仍然长期等待时,优先检查已经持有的读锁、RUnlock 配对、递归读锁、其他写者排队和写临界区长度。125 收藏 -
Go text/template 的 FuncMap 用来把 Go 函数注入模板。本文从解析前注册开始,说明单返回值、值加 error、管道传参和同名替换的边界,并给出可直接改造的模板示例。125 收藏 -
Go mod tidy 删除依赖后构建失败,通常是源码依赖图与实际构建输入不一致。本文从 tidy 差异、导入路径、生成代码、vendor、workspace 和 CI 入口逐层定位并给出可复查的修复方案。125 收藏 -
Golang · Go问答 | 3天前 | 标准库 · 错误处理 · go · 并发控制 · Go context cause 取消原因 WithCancelCause CancelCauseFunc
Go 1.20 起可以用 context.WithCancelCause 保存具体取消原因,再用 context.Cause 读取;本文区分 ctx.Err 的通用状态与 Cause 的诊断信息,并说明父子 context 的首次取消、nil cause 和超时 cause 边界。125 收藏 -
Go 的 encoding/csv 负责 CSV 字段和缓冲写入,但不会自动添加 UTF-8 BOM。本文说明如何在创建 csv.Writer 前写入 BOM,并正确处理 Flush、Error、CRLF 和 Excel 导入编码选择,解决中文 CSV 直接打开乱码问题。124 收藏 -
Go 订单金额超过 int64 时,按最小货币单位使用 big.Int,比例计算使用 big.Rat,并守住 JSON 与数据库边界。124 收藏 -
GOAMD64 等级不匹配时,先区分 GOOS/GOARCH 与 amd64 微架构要求,再按部署机器的最低能力选择 v1 到 v4。本文给出排查表、构建命令和发布清单,避免高等级产物在旧 CPU 或受限虚拟机上启动失败。124 收藏 -
sync.WaitGroup 不能在首次使用后复制,因为复制会把计数器、等待者状态和信号量拆成两份。本文用错误示例说明 Wait 提前返回或一直等待的原因,并给出指针传递、go vet 检查和代码审查清单。124 收藏 -
Go fuzz 测试一直产生新输入时,先区分覆盖率探索与输入域失控,再用 seed corpus、长度格式约束和固定 fuzz 预算缩小空间,让失败样本更快复现。124 收藏 -
Go 没有直接限制 embedding 层级的语法。想控制外层 API,应把匿名嵌入改为命名字段并用包装方法转发;窄接口只能限制调用方的静态视图,遮蔽也不会删除底层成员。124 收藏