Go语言技术文章
-
用 Gonum mat.SymDense 构造对称矩阵,通过 Cholesky.Factorize 判断正定性并取得分解,读取 L/U 三角因子,再把同一分解用于线性方程组求解,同时说明非正定和维度错误的处理边界。437 收藏 -
go mod tidy 负责按源码导入关系整理 go.mod、go.sum 和模块依赖,不负责关闭文件、HTTP 连接或 goroutine。本文区分模块缓存与运行时资源,给出依赖观察、缓存清理和程序资源泄漏的排查方法。437 收藏 -
说明Go path.Join与net/url.PathEscape的职责边界,演示只转义一个动态URL路径片段,并用输入检查封装成可复用的资源路径构造函数。437 收藏 -
Go 的 encoding/json 没有给某个字段单独绑定 Reader 的接口。本文用自定义 UnmarshalJSON 检查字段字节数,再在 HTTP 入口限制整个请求体,说明字段超限、请求体超限、语法错误和类型错误的处理边界。436 收藏 -
Go 1.27 将标准库 Unicode 数据升级到 17.0.0。本文用 unicode.Version、分类表和 UTF-8 校验搭出兼容处理方案,并说明旧工具链、字体与终端显示之间的边界。436 收藏 -
围绕 Go net/http 的 Response.Body.Close、EOF、Transport 连接池和 HTTP/1.x 复用边界,整理响应体未完全读取时的排查与处理方案。436 收藏 -
Go HTTP/1 服务端默认可能先消耗未读请求体再写响应,ResponseController.EnableFullDuplex 可让 handler 按需交替读取请求体与写出响应。本文说明调用位置、ErrNotSupported 处理、Flush 的职责,以及 HTTP/2 和代理缓冲的边界。436 收藏 -
Go 1.27 及更高版本中,go mod tidy 会整理多个 require 块。本文区分块布局、间接标记和模块版本变化,说明如何用 -diff 判断是否只是格式整理。436 收藏 -
Go work sync 没有更新某个模块的 go.sum,通常不是命令失效,而是它同步的是 workspace build list 到各模块的 go.mod;workspace 独有的校验记录由 go.work.sum 保存。本文按文件职责和命令边界说明如何判断结果。436 收藏 -
解释 Go 循环中的 defer 为什么不会在每轮迭代结束时执行,并给出局部函数封装资源释放的实用写法。436 收藏 -
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 收藏 -
encoding/binary 的 AppendUint32 适合把固定宽度整数连续追加到字节切片。本文从 ByteOrder 与 AppendByteOrder 的接口差异入手,演示如何按统一字节序构造多字段数据、按四字节边界解码,并说明容量预分配、PutUint32 与 AppendUint32 的取舍。436 收藏