Go教程技术文章
-
Go crypto/tls 的 ConnectionState 会记录 TLS 连接的协商状态,其中 DidResume 用于表示本次连接是否从既有会话成功恢复。本文说明读取时机、首次握手与会话恢复的区别,以及如何把结果用于日志和指标。230 收藏 -
Go map 可以在 range 遍历中删除已经判定过期的键,但新增键本轮是否出现没有保证。本文结合缓存清理场景说明直接删除、先收集再删除和延后新增的取舍。230 收藏 -
用 github.com/google/uuid 处理 UUID 字符串时,外部输入应使用 Parse 并保留 error,固定可信常量才使用 MustParse,统一输出交给 String;严格 API 外形还要额外约束。230 收藏 -
说明 Go 1.27 在 macOS 上使用 SSL_CERT_FILE 和 SSL_CERT_DIR 的规则,结合证书来源、进程环境、证书池缓存与客户端示例,解释生效条件、错误判断和恢复方法。230 收藏 -
strings.Builder.Reset 会清空已写内容;复用时应分别观察 Len 与 Cap,再按下一轮写入规模决定是否 Grow,并避开复制非零 Builder 的风险。230 收藏 -
用 Gonum distuv.Normal 的 CDF 与 Survival 计算正态分布左尾、右尾和双侧尾部概率,解释 Mu、Sigma 与 z 分数的边界。230 收藏 -
用完整包路径、类型和方法定向查询 Go 文档,按需使用 -src 查看实现,并用 go list 查找本地源码目录,区分符号查询、展示选项与文件位置。230 收藏 -
Go encoding/asn1.Unmarshal 出错时,不要把 SyntaxError 和 StructuralError 混为一谈。本文用 errors.As 区分 DER 语法无效与接收结构不匹配,再从字段顺序、struct 标签、导出字段、指针参数和 rest 逐项定位。230 收藏 -
用 Go 的 weak.Pointer 做一个不会长期抓住对象的弱缓存,解释 runtime.KeepAlive、Load 与 GC 回收之间的边界,并给出可复现的并发读取写法。229 收藏 -
Go 接口返回多态 JSON 时,可先用 json.RawMessage 保留 payload,再根据 kind 选择目标结构体二次解码,并明确处理 null、未知字段和未知类型。229 收藏 -
用 Go database/sql 的 sql.NullString 处理可空文本,区分 SQL NULL 与空字符串,并覆盖单行读取、多行扫描和写回数据库。229 收藏 -
介绍 Go 用 io.Pipe 将 archive/tar 输出直接作为 HTTP 请求体的方法,说明背压、关闭顺序、错误传播和 Content-Length 边界。229 收藏 -
Go 1.23 的 slices.Chunk 能按固定上限惰性产出连续子切片。本文用批量写入场景说明最后一组、空输入、非法大小、错误返回和底层数组共享,并给出可观察的工程封装。229 收藏 -
讲清 Go sync.OnceValues 如何把初始化返回值与 error 一起缓存,说明并发调用、失败复用、panic 复用和不可重试边界。229 收藏 -
用 os.Root 把文件操作限制在指定目录内,再通过 Root.Link 的两个相对路径参数创建同一文件的硬链接,并梳理符号链接源文件、路径越界和 GOOS=js 的边界。229 收藏