Go语言技术文章
-
WalkDir 的错误处理关键不在于一律忽略,而在于区分错误范围与结果完整性,再选择返回错误、继续遍历、跳过目录或停止全局遍历。455 收藏 -
Go 1.27 支持具体类型的泛型方法,但嵌入泛型类型后仍要按实例化类型、值/指针接收者和接口固定签名计算方法集。本文用结构体与接口示例拆解常见误判,并给出排查清单。455 收藏 -
使用 sync.WaitGroup 收尾并发任务时,关键不是把 Wait 放在最后,而是保证任务计数先建立、空 WaitGroup 上的 Go 先于 Wait,并在复用前等上一轮 Wait 返回。本文对比 WaitGroup.Go 与 Add/Done 的调用顺序,给出一份可直接落地的并发收尾写法。455 收藏 -
讲清 Go flight recorder 故障诊断端点的鉴权、单并发、临时文件快照、下载响应、测试与运行边界,给出可直接改造的 Handler。453 收藏 -
Go 的 database/sql 提供了泛型 sql.Null[T] 来接收可能为 NULL 的列。本文从 Scan 指针、Valid 判断、零值区分和 driver.Value 类型边界四个方面说明可空字段的正确写法。451 收藏 -
Golang · Go教程 | 4天前 | JSON · 流式处理 · Go教程 · 内存优化 · 内存优化 encoding/json 流式解析 json.Decoder Go JSON处理 超大JSON数组
Go 解析超大 JSON 数组时,先 ReadAll 再 Unmarshal 会同时保留输入字节和全部对象。本文使用 json.Decoder、Token、More 与 Decode 逐项处理,并补齐输入上限、结束符检查和错误偏移记录。449 收藏 -
weak.Pointer 不会让对象保持可达,但 map 中的弱键不会自动删除。本文用 Go 示例说明如何依据 Value() 返回 nil 清理失效键,并处理并发、保活和惰性扫描边界。448 收藏 -
Go net/http 中,响应 Trailer 不是普通响应头,服务端要在写出响应前声明尾部字段,客户端还要先把 Response.Body 读到 EOF 才能读取最终 Trailer。本文解释声明顺序、读取时机与为空排查方法。448 收藏 -
结构体里放入 sync.Mutex 后,按值传参、赋值或返回都会复制锁的内部状态,可能造成异常解锁、数据竞争和锁失去保护对象。本文从根因、错误写法、指针改造和 go vet copylocks 检查四个方面说明安全设计方式。448 收藏 -
printer.Config 的 Indent 控制基础缩进层级,Tabwidth 和 Mode 决定制表宽度及空格策略。本文用完整 AST 示例讲清组合方式与 gofmt 边界。447 收藏 -
围绕 Go html/template 的函数注册、模板解析和数据执行三个阶段,给出可复制的错误处理写法,说明 ParseFS、ExecuteTemplate、missingkey 与 HTML 转义边界。447 收藏 -
Go 的 debug/buildinfo.ReadFile 可以离线读取指定二进制内嵌的工具链、主模块和依赖模块信息。本文给出完整示例,说明 Deps、Version、Sum、Replace 的读取方法及缺失边界。446 收藏 -
Golang · Go教程 | 1天前 | go · Go教程 · net/http · WriteTimeout SSE 流式响应 SetWriteDeadline Go ResponseController
Go 流式响应不适合直接套用服务器级 WriteTimeout。本文说明如何用 ResponseController 为单个 Handler 覆盖写期限,在每次 Write 与 Flush 前设置短窗口、成功后清除,并处理 ErrNotSupported、中间件 Unwrap、客户端断开与代理缓冲。446 收藏 -
Go 1.24 起可以用 http.Transport.Protocols 显式区分 HTTP/1、TLS 上的 HTTP/2 与未加密 HTTP/2。本文给出仅 HTTP/1 和 HTTP/1 加 TLS HTTP/2 两种配置,说明如何不加入 UnencryptedHTTP2,以及零值、ForceAttemptHTTP2 和版本边界。445 收藏 -
Go 的 context.WithoutCancel 可以让收尾任务不继承请求取消,但它没有 deadline 和 Done;正确做法是再包一层独立超时,并复制必要数据。445 收藏