Go语言技术文章
-
Go gzip.Reader 用 Reset 串行复用,但 Close 不会关闭底层文件,也不能代替读到 EOF;示例区分超限拒绝、尾部校验与逐文件清理。454 收藏 -
Go regexp.Regexp.AppendText 会把正则表达式文本追加到已有字节缓冲区,输出等同于 String,但不会记录 CompilePOSIX 或 Longest 等改变匹配语义的设置。本文说明缓冲区复用、返回值和可恢复配置的边界。454 收藏 -
通过AddSource与ReplaceAttr控制Go slog日志的源码信息,展示短文件名与删除source的写法,说明Handler绑定、封装调用点和定位成本之间的取舍。454 收藏 -
按依赖变更说明Go vendor不自动刷新的原因,区分模块声明、包引用与模块缓存,给出单模块更新和工作区范围处理方法,并对齐CI构建模式与快照提交。454 收藏 -
Go bytes.Repeat 会返回由多个 b 拼成的新字节切片,但负数次数或结果长度溢出会触发 panic。本文从固定填充和测试数据场景出发,说明零次数、空输入、参数保护、结果规模和改用流式写入的边界。454 收藏 -
Golang · Go教程 | 6天前 | 网络编程 · 标准库 · Go教程 · HTTP客户端 · Go 错误处理 errors.Is errors.As net/http.Client Client.Do
Go net/http.Client 的 error、HTTP 状态码和响应体读取错误属于不同阶段。本文用 %w 保留原始 cause,用 url.Error 和自定义 HTTPError 承载上下文,并说明 Body 关闭、读取、重试边界。454 收藏 -
用 Go crypto/ed25519 完成短消息签名和验证,并通过复用消息字节、预分配批处理结果和延迟编码减少外围额外分配。本文也说明签名切片本身仍由标准库返回,避免把优化目标说成零分配。454 收藏 -
Go html/template.URLQueryEscaper 可以把多个参数的文本表示编码成适合嵌入 URL query 的字符串。本文从最小用法出发,说明空格和特殊字符的处理、模板上下文自动转义、重复 key 与空值边界,以及避免重复编码的工程写法。454 收藏 -
fmt.Errorf 中的 %w 会保留底层错误并建立可遍历的错误链,%v 只把错误格式化为消息文本。本文用最小示例说明 errors.Is 找不到原始错误的原因、排查方法和自定义包装边界。453 收藏 -
Go TLS 握手卡住时,不要只给 TCP 建连设置超时。通过 DialContext 约束建连、HandshakeContext 约束 TLS 握手,并在失败路径关闭连接,可以让取消信号真正覆盖卡住的握手阶段。453 收藏 -
Go 1.21 起可以用 maps.Copy 将默认配置与覆盖配置合并到目标 map:src 的同名键覆盖 dst,目标映射会被原地修改。本文说明调用方向、nil 目标、浅拷贝和旧版本兼容写法。453 收藏 -
Go 的 sync.RWMutex 不支持把 RLock 直接升级为 Lock。读锁持有者在写者等待时继续申请写锁,会形成自己等待自己释放读锁的阻塞环。本文解释规则、定位证据和安全改写方式。453 收藏 -
外部毫秒参数不要直接乘 time.Millisecond。本文用 Go 标准库写一个带格式、符号和上限检查的转换函数,处理精度、溢出与边界值。453 收藏 -
通过依赖注入让 Go 令牌生成函数接收 io.Reader:生产环境使用 crypto/rand.Reader,测试环境注入可重复字节流,稳定覆盖长度、编码和错误分支,同时明确测试替换不能进入生产路径。453 收藏 -
Go 用 slices.IndexFunc 按条件查找切片时,会返回第一个满足判断的元素索引;如果没有匹配项则返回 -1。本文说明空切片、重复匹配、结构体字段判断、Index 对比和旧工具链降级写法。453 收藏