Go语言技术文章
-
Go reflect.Elem 遇到 nil 指针时会返回零 Value,而不是一个空的结构体值。本文区分 nil 指针、nil interface 与无效 Value,说明 Kind、IsNil、Elem、IsValid 的安全判断边界,并给出多级指针的处理方式。349 收藏 -
Golang · Go教程 | 3星期前 | 并发 · 缓存 · 性能优化 · 正则表达式 · Go教程 · 正则表达式 Go 并发缓存 MustCompile regexp.Compile Regexp缓存
Go 中固定正则应在初始化阶段编译一次,动态正则则按 pattern 缓存 *regexp.Regexp。本文从重复 Compile 的现象出发,说明 MustCompile、并发安全 map、错误返回和高基数 key 的边界。349 收藏 -
Go 1.24 新增的 time.Time.AppendText 会把时间按带子秒精度的 RFC3339 格式追加到已有字节切片。本文说明返回值、错误处理、时区边界和旧版本替代方式。349 收藏 -
Go 服务端收到 ClientHello 后,怎样用 tls.Config.GetConfigForClient 按 SNI 或 ALPN 选择配置?本文梳理回调参数、nil 与 error、配置不可变和会话恢复边界。349 收藏 -
Go Ticker 的 Stop 只停止后续 tick,不会关闭 C 通道,也不会自动清空调用方保存的旧指针或 channel。本文区分停止发送、关闭通道、解除引用和 GC 回收,给出可退出的接收循环与清理边界。349 收藏 -
Go TLS 默认使用主机根集合,显式空 RootCAs 池却不会自动合并系统根。通过客户端构造示例说明追加企业 CA、加载错误、容器证书环境与其他握手失败的区别。349 收藏 -
Go CSV读取启用ReuseRecord时,返回切片可能共享底层数组。结合同步消费、缓存快照和异步交接,说明低分配读取的适用方式、错误处理与内存保留取舍。349 收藏 -
用 strconv.IsPrint 按 rune 判断字符是否适合进入可读日志,说明空格、控制字符、UTF-8 合法性与日志脱敏之间的边界,并给出检查和过滤代码。349 收藏 -
用 Gonum interp 的 NaturalCubic 构建自然三次样条,覆盖输入约束、Fit/Predict 调用、导数读取、区间边界和插值器选型。349 收藏 -
Go fmt.Errorf 在格式串中包含多个 %w 时会保留多个错误分支。本文用自动化任务场景说明多错误关系、errors.Is 与 errors.As 的选择、nil 过滤、错误门禁和兼容边界。349 收藏 -
Go net/http.Transport 升级后出现连接复用、延迟或连接数变化时,不要先猜版本回归。本文用最小客户端、httptrace、Response.Body 生命周期和显式 Transport 配置,建立一套可比较的定位方法。349 收藏 -
用 Go flag.TextVar 和 encoding.TextUnmarshaler 把命令行文本转换为自定义配置类型,演示 duration 解析、范围校验、默认值和错误处理。349 收藏 -
io.MultiReader 会把当前 Reader 的 EOF 当作这一段结束并继续读取后续 Reader,只有全部输入结束才向外返回 EOF。本文用最小示例区分中间 EOF、真实错误、空输入和资源关闭边界。349 收藏 -
Go 的 go/types.Identical 比较函数签名时不会把参数名当作类型身份。本文用 Signature 示例说明参数类型、结果、variadic、receiver 和 importer 一致性的边界。349 收藏 -
Go 的联合约束项换顺序后,String() 可能不同,但只要代表的类型集合相同,go/types.Identical 就应按语义判断为等价。本文结合 Union、Term.Tilde、Term.Type 和稳定展示键,说明如何避免把语法顺序误当成类型身份。349 收藏