Go语言技术文章
-
Go 的 Location 会影响时间的构造解释和展示,但不等于改变实际时间点。本文说明 Equal、Before、After 与 == 的区别,并处理 ParseInLocation、UTC、序列化和单调时钟的常见边界。451 收藏 -
Go 服务器调用 Shutdown 后仍可能因主协程提前退出、排空上下文已取消或外部期限到达而截断请求。通过原创服务示例拆解退出顺序、超时强制关闭和依赖收尾。451 收藏 -
用 go list -m -json 导出 Go 模块的路径、版本、目录、go.mod、替换关系和更新信息,说明连续 JSON 解析及主模块、构建列表、版本查询的边界。451 收藏 -
Go runes.ReplaceIllFormed 会将非法 UTF-8 字节替换为 U+FFFD。本文说明字节变化与无损解码的区别,给出原始副本和显示文本分离的示例,并解释批量与分块处理限制。451 收藏 -
在 Go 中嵌入 Starlark 时,load 语句由 Thread.Load 回调负责解析模块名并返回 StringDict。本文用缓存、递归线程和循环依赖处理,搭出一个可维护的模块加载器。451 收藏 -
Go groot 的 File.Close 会让文件失去 I/O 能力,但不会自动清空调用方已经保存的普通值。本文区分已解码对象、键元数据和仍依赖文件的调用,给出关闭前复制数据的写法。451 收藏 -
Go runtime.LockOSThread 只适用于依赖线程局部状态的操作系统服务或非 Go 库调用。本文说明判断条件、成对解锁、专用锁定 goroutine 以及不能恢复线程状态时的退出边界。451 收藏 -
Go httptrace.DNSDone 回调里的 Err、Addrs 和 Coalesced 分别表示什么?本文从请求上下文接入 ClientTrace,说明如何读取 DNS 阶段错误、区分最终请求错误,并处理回调并发与空地址列表。451 收藏 -
Go 的 color.RGBA 与 Color.RGBA() 都遵循预乘 Alpha 语义,透明度较低时读取到的 RGB 会随之变小。本文解释返回值、NRGBA 与 NRGBAModel 的差异,并给出 image.Image 通用读取时的选择方法。451 收藏 -
Go template.Template 看起来不生效,通常不是模板对象失效,而是 Parse、Execute、命名模板、数据字段或 FuncMap 的边界没有处理好。本文按最小代码、文件模板和并发复用逐层排查,并保留真实错误信息。451 收藏 -
使用 go/types 分析函数或方法时,可以从 types.Signature 的 Params 和 Results 两个 Tuple 逐项取出变量名与 Type;再结合 Recv、Variadic 和 TypeParams,就能导出稳定的参数与返回值类型清单。451 收藏 -
bbolt 的 DB.View 会提供一个一致的只读事务视图,Tx.WriteTo 可以把该视图写入 io.Writer,Tx.CopyFile 则适合直接生成备份文件。本文给出两种导出方式的 Go 写法,并说明权限、错误处理和事务生命周期。450 收藏 -
用 Go log/slog 设计结构化日志字段时,把服务固定字段、请求上下文和事件字段分层,再用 Handler 统一分组与敏感字段脱敏,日志更容易检索和维护。450 收藏 -
Go database/sql Tx 提交后查询不一致时,分开记录事务内读取、Commit回执与事务外新查询,核对查询入口、错误阶段、数据源和主键条件,避免误判提交失败或盲目重试。450 收藏 -
Go html/template 会按 URL 上下文过滤动态 javascript: 协议,并可能输出 #ZgotmplZ。本文解释过滤原因、template.URL 的安全边界,以及把点击行为改成普通链接或严格 allowlist 的做法。450 收藏