Go教程技术文章
-
Go weak.Pointer 不会阻止对象被垃圾回收,适合做可丢失的二级缓存索引。本文用 weak.Make、Value、runtime.KeepAlive 和回源逻辑说明如何实现可失效引用,以及它不能替代业务主存储的边界。350 收藏 -
Go encoding/csv.Writer 写入 CSV 时,Write 成功不代表底层输出已经完成。本文说明 Write、Flush、Writer.Error 的正确检查顺序,并解释 WriteAll 的错误传播方式。350 收藏 -
用 Go 标准库实现一个可取消的定时重试任务,覆盖 context 取消、指数退避、最大尝试次数、错误分类和优雅退出,给出可直接运行的最小示例与验收方法。349 收藏 -
测试 HTTP Handler 时,httptest.NewRequest 会按服务端请求语义填充 URL、Host、TLS 和 ContentLength。本文用路径、绝对 URL、HTTPS 与请求体四组样本,拆开检查请求目标边界,避免把客户端请求和服务端请求混在一起。349 收藏 -
当一个 Go 类型同时靠方法集实现文本编码或 JSON 编码时,json.Marshal 会先看 MarshalJSON,再考虑 encoding.TextMarshaler;nil 指针又有单独的保护规则。本文用最小示例拆开调用优先级、指针接收者和嵌套字段边界。349 收藏 -
用 Go crypto/tls 的 GetCertificate 配合 atomic.Pointer 保存不可变证书快照,实现不改动 tls.Config 的最小化证书轮换,并厘清并发读取、加载失败和旧连接的边界。349 收藏 -
用明确的 Go 包路径配合 go test -race,只检查目标包的竞态测试;同时区分 -run、./...、依赖编译和 -count=1 的作用边界。349 收藏 -
Go 自定义测试 helper 没有调用 testing.TB.Helper() 时,失败日志容易指向工具函数内部。本文说明 Helper 的正确位置、多层包装与并发边界,让错误行号回到业务测试调用处。349 收藏 -
Golang · Go教程 | 2星期前 | 并发 · 缓存 · 性能优化 · 正则表达式 · Go教程 · 正则表达式 Go 并发缓存 MustCompile regexp.Compile Regexp缓存
Go 中固定正则应在初始化阶段编译一次,动态正则则按 pattern 缓存 *regexp.Regexp。本文从重复 Compile 的现象出发,说明 MustCompile、并发安全 map、错误返回和高基数 key 的边界。349 收藏 -
Go 1.24 新增的 time.Time.AppendText 会把时间按带子秒精度的 RFC3339 格式追加到已有字节切片。本文说明返回值、错误处理、时区边界和旧版本替代方式。349 收藏 -
Go CSV读取启用ReuseRecord时,返回切片可能共享底层数组。结合同步消费、缓存快照和异步交接,说明低分配读取的适用方式、错误处理与内存保留取舍。349 收藏 -
用 strconv.IsPrint 按 rune 判断字符是否适合进入可读日志,说明空格、控制字符、UTF-8 合法性与日志脱敏之间的边界,并给出检查和过滤代码。349 收藏 -
用 Gonum interp 的 NaturalCubic 构建自然三次样条,覆盖输入约束、Fit/Predict 调用、导数读取、区间边界和插值器选型。349 收藏 -
用 Go flag.TextVar 和 encoding.TextUnmarshaler 把命令行文本转换为自定义配置类型,演示 duration 解析、范围校验、默认值和错误处理。349 收藏 -
Go crypto/ecdh 的 PublicKey.Bytes 返回的是公钥编码副本,恢复时需要使用同一条曲线调用 Curve.NewPublicKey。本文用 P256 演示导出、传输、恢复和 Equal 对照,并解释 NIST 曲线未压缩点、X25519 长度检查及常见错误。349 收藏