Go语言技术文章
-
Go net.Resolver.LookupIP 取消后,标准库不会把半截地址列表作为成功结果返回。本文解释 Context 取消、并发共享查找、旧切片复用和错误判断之间的关系,并给出安全的地址缓存与排查写法。105 收藏 -
B.Loop 只负责迭代与计时,不会恢复循环外可变状态。切片长度、容量、map 内容或缓冲区会跨轮累积,导致每次操作不再等价。本文用可运行示例区分新建成本与复用成本,并说明重置是否计时。105 收藏 -
Golang · Go教程 | 3星期前 | 性能优化 · Go教程 · go strings.Builder Go Builder Grow Go 字符串预留容量 Go Builder 扩容 Go UTF-8 字节长度
Go strings.Builder Grow 预留容量后仍扩容,通常是把追加字节预算误当成最终总容量,或漏算 UTF-8 字节、分隔符和后续写入。本文用 Len、Cap 和实际字节长度拆解原因,并给出可复用的检查方法。104 收藏 -
Go标准库flag可通过自定义Value累积同名参数。本文实现顺序保留的字符串切片类型,说明Set调用、零值String、FlagSet错误处理与参数终止边界。104 收藏 -
Go goroutine 泄漏不能靠单次数量下结论。本文给出受控 pprof 端点、基线与增量样本、debug 文本栈和负载记录的组合方法,用持续增长堆栈定位阻塞点并完成修复复测。104 收藏 -
用 Go 1.24 的 os.OpenRoot 建立插件目录边界,通过 Root 方法和 Root.FS 读取相对文件,处理路径遍历、符号链接、资源关闭及挂载点等实际限制。104 收藏 -
Go 使用 bufio.Writer 写文件时,Write 成功不等于内容已经落盘。本文拆开 Flush、Sync、Close 的责任边界,并给出可返回错误的关闭流程与最终内容校验方法。103 收藏 -
用 go mod why 按包或模块读取从主模块到目标依赖的最短导入路径,理解 -m、-vendor、未引用提示与 go mod graph 的边界。103 收藏 -
用 Go os.CreateTemp 创建临时文件时,创建、写入、关闭和删除是四个不同责任。本文给出一套保留原始错误、无论成功失败都清理文件的实践写法。103 收藏 -
Go 1.27 的可移植 simd 包在 CPU 不支持 SIMD 时会使用纯 Go 仿真实现;部分能力不足时默认降到可用向量宽度或仿真,但强制宽度可能触发 panic。103 收藏 -
下游接口少量请求只是变慢而没有失败时,可以用 Go 的 net/http 与 context 为幂等读取请求增加受控副本:设置对冲延迟、共享总截止时间,首个成功后取消其余副本,同时限制额外流量。103 收藏 -
Go 泛型类型推断不会单独替你选择更窄的类型范围:实参或上下文先给出候选类型,约束再检查它是否允许。本文比较 any、方法约束和类型集合约束,并说明推断失败时的显式写法。102 收藏 -
Golang · Go问答 | 1星期前 | HTTP · Cookie · net/http · Go问答 · cookie Go net/http CookiesNamed Request.Cookies
解释 Go Request.Cookies、CookiesNamed 和 Cookie 在同名 Cookie 请求头下的读取顺序与选择语义,给出重复值排查示例、版本边界和登录态处理策略。102 收藏 -
用 Go 1.27 的 goroutineleak profile 按创建栈聚合泄漏样本,结合 pprof top 与 list 定位阻塞源码,并说明 channel、sync 与 IO 场景的判断边界。102 收藏 -
Go 1.27 的 goroutineleak 剖析没有业务标签时,仍可从永久阻塞的操作栈回溯到调用者和 goroutine 创建点。本文给出 pprof 接入、采集、定位与修复方法。102 收藏