Go问答技术文章
-
Golang · Go问答 | 1星期前 | go · TLS · 网络安全 · 版本迁移 · 证书链 · crypto/tls Go 1.27 TLS 1.3 ConnectionState.LocalCertificate PeerCertificates
Go 1.27 为 tls.ConnectionState 增加 LocalCertificate,用来读取本端在握手中发送的证书链。它和 PeerCertificates 的方向相反,读取时机也不同。本文用最小代码拆开字段语义、握手后读取方式、mTLS 审计边界与升级检查。480 收藏 -
Go 1.23 之后,不调用 Ticker.Stop 不一定等于 ticker 内存泄漏;真正要排查的是 ticker 是否仍被引用、消费它的 goroutine 是否会退出,以及后台任务是否还在继续执行。480 收藏 -
Go 类型断言遇到 nil interface 或 typed nil 时,comma-ok 与单值断言的行为并不相同。本文用原创示例解释失败、零值和 panic 的边界。480 收藏 -
Go 服务把 regexp.Compile 放进请求函数后,正则本身没变,延迟却会随并发上升。本文用基准对比请求内编译、包级预编译和受控缓存,解释编译成本、并发读写与动态规则的边界。479 收藏 -
用 Go filepath.IsLocal 先拦截绝对路径和 .. 路径,再配合 Join 与符号链接复核,建立文件下载场景的安全边界。479 收藏 -
slices.Clone 会复制元素并保留输入切片的 nil 语义;copy 只搬运元素,目标切片是否为 nil、长度够不够,都由调用方先决定。本文用对照代码说明两者的边界。479 收藏 -
Go test -race 通过并不等于业务状态一定一致。本文从执行覆盖、同步关系和多字段不变量三层排查数据异常,并给出可复查的修复清单。479 收藏 -
Go 扫描上传目录或日志目录时,os.ReadDir、File.Readdir 和 filepath.WalkDir 的内存与排序行为并不一样。本文用一个目录索引小实验说明如何按需读取 DirEntry、避免无意排序,并在权限错误和部分结果场景下保留可用数据。478 收藏 -
Go range 遍历结构体切片时,迭代变量拿到的是元素值副本;本文对比索引、指针切片和 map 的写法,说明怎样让字段修改真正写回原数据。478 收藏 -
Go 中值类型不能赋给接口,常见原因是接口要求的方法由指针接收者声明,因而只进入 *T 的方法集。本文用最小示例区分方法调用的自动取地址与接口赋值规则,并给出值接收者、指针接收者和编译期断言的判断方法。478 收藏 -
go work sync 会把工作区的构建列表同步回 use 指定的各个模块,因此 go.mod 可能新增间接依赖或升级版本。本文给出确认工作区、区分单模块依赖、整理 go.mod 的实用步骤。478 收藏 -
Golang · Go问答 | 2个月前 | go · Context · 并发编程 · 接口超时 · 超时控制 goroutine泄漏 WithTimeout Go context Go问答 CancelFunc
从接口超时、下游取消和 goroutine 泄漏治理角度,解释 Go context 的使用价值、风险边界、采用路径和观察指标。477 收藏 -
解释 Go net.IP.Equal 如何处理 4 字节 IPv4 与 IPv4-mapped IPv6,结合 To4 和 16 字节表示说明比较、规范化与边界判断。477 收藏 -
Go select 可以用 nil channel 动态屏蔽一个通信分支:初始设为 nil,启用时切换为有效 channel,停用或关闭后再置 nil。本文说明 select 的重算边界、关闭处理和 default 常见坑。477 收藏 -
runtime.GOMAXPROCS 限制的是同时执行用户级 Go 代码的并行度,不是操作系统线程总数。本文用 G、P、M 和阻塞系统调用说明线程数为何可能高于设置值,并给出容器与本地程序的排查顺序。477 收藏