Go语言技术文章
-
解释 embed.FS 与 io/fs 的逻辑路径规则,说明 Windows 也必须使用斜杠,并给出用 path.Join、ReadDir、Open 和 ReadFile 读取嵌入资源的跨平台写法。438 收藏 -
runtime.Goexit 结束的是当前 goroutine,不会返回调用方,但已经登记的 defer 仍会执行;它不是 panic,recover 也无法捕获。本文说明 main goroutine 的特殊结果,并给出 return、error、context 和 channel 的替代选择。438 收藏 -
go mod tidy 负责按源码导入关系整理 go.mod、go.sum 和模块依赖,不负责关闭文件、HTTP 连接或 goroutine。本文区分模块缓存与运行时资源,给出依赖观察、缓存清理和程序资源泄漏的排查方法。437 收藏 -
Go 反射中判断类型是否实现接口,应使用 reflect.Type.Implements。本文说明如何构造接口类型、处理 T 与 *T 的方法集差异、规避 nil 和非接口参数问题,并比较 Implements 与 AssignableTo 的适用场景。436 收藏 -
用 Go expvar.Func 发布只读动态指标:理解读取时回调、JSON 返回值、Publish 注册、/debug/vars 接入,以及并发和性能边界。436 收藏 -
Go ast.Inspect 返回 false 只跳过当前子树。本文用原创函数声明筛选示例,解释 found 标记、nil 退出通知,以及用 ast.Preorder 和 break 结束迭代的区别。436 收藏 -
Go reflect.MapIter.Reset 传入 reflect.Value{} 可以解除迭代器对原 map 的引用,但不会清空 map 或强制垃圾回收。本文说明遍历结束后的脱钩位置、迭代器复用条件,以及其他引用仍存活时的边界。436 收藏 -
Golang · Go教程 | 6天前 | Go教程 · Go net/http 反向代理 httputil ReverseProxy NewSingleHostReverseProxy Rewrite SetURL
Go 构造反向代理目标时,应先把后端地址解析成 url.URL,再交给 httputil.NewSingleHostReverseProxy。本文说明 scheme、host、基础路径和查询参数如何参与转发,并比较 Rewrite、SetURL 与旧 Director 的适用边界。435 收藏 -
说明 Go ZIP 解析、条目打开与读取阶段的错误保留,用 %w 和 errors.Join 保留原因,给出内存归档示例,并解释校验和、关闭、容量限制及错误分类边界。434 收藏 -
Go runtime.SetFinalizer 不生效时,先检查对象是否仍然可达、终结器是否通过闭包重新引用对象,以及是否把 GC 当成了确定的定时器。本文按迁移视角说明显式 Close、KeepAlive 和终结器兜底的正确边界。434 收藏 -
Go slog.NewLogLogger 可以把 slog.Handler 接到旧式 log.Logger 接口,让暂时不能改造的 Printf、Println 和 Output 调用进入新的结构化日志链路。本文说明桥接关系、级别选择、参数边界、Handler 配置和上线检查。433 收藏 -
用固定前缀记录解析器说明 Peek 的 nil Reader、空输入、部分前缀、底层错误与正式消费,补充缓冲区不足、零长度请求和返回切片的使用期限。433 收藏 -
Go 的 http.ParseSetCookie 并不是遇到任何非法属性都返回 error。本文按首段 cookie、属性解析和 Cookie.Unparsed 三层拆开排查,给出可记录原始异常属性的诊断写法。433 收藏 -
Go strings.Builder 看起来不生效,通常不是 WriteString 失效,而是忘了调用 String、用值接收者复制了非零 Builder、Reset 后又读取空结果,或把 Builder 在多个 goroutine 间共享。本文按现象拆开排查并给出稳妥写法。433 收藏 -
围绕 Go encoding/hex.Decode 的 InvalidByteError,说明如何提取非法字节、计算输入位置、区分奇数长度 ErrLength,并封装成可读的解码诊断。432 收藏