-
constant.BoolVal 返回 false 不一定表示常量明确为假,因为 Unknown 也会返回 false。本文说明如何先检查 Kind,再安全读取布尔值并保留未知状态。
-
Go 1.21 以后,工具链选择由 GOTOOLCHAIN、go.mod 或 go.work 中的 go 与 toolchain 共同决定。本文按固定版本、PATH 复用和自动下载三种工程约束比较配置方式。
-
Go 先用 go test 生成 coverprofile,再用 go tool cover -func 按函数查看文件位置、函数名和覆盖百分比。本文解释 total 行、低覆盖函数、输出保存和与 HTML 报告的边界。
-
Go vet 的 stdmethods 检查器会针对 WriteTo、ReadRune、MarshalJSON 等熟知方法名核对标准签名。本文用 WriteTo 示例说明如何运行 go vet、如何用接口断言确认修复,以及它不覆盖自定义接口的边界。
-
Go text/template.Template.Clone 会复制模板集合的命名空间,让公共模板可以派生出互不覆盖的变体。本文用完整流程说明 Clone、Parse、Funcs 和 Execute 的顺序、错误处理与并发边界。
-
Go io/fs.ReadDirFile.ReadDir 通过 n 参数决定分批读取还是一次取完剩余目录项。本文结合目录文件接口说明游标、io.EOF、部分结果、关闭资源和选型边界。
-
Go mod edit 的 replace 可以在不改 import 路径的情况下,把当前主模块依赖切到本地目录。本文区分指定版本与全版本替换,说明 require、module 路径和删除临时替换时的边界。
-
Go html/template 会按 CSS 上下文处理 style 中的动态值。本文用白名单主题映射说明 template.CSS 的适用范围、可信来源、不可信输入隔离、ZgotmplZ 排查方法,以及它与普通字符串和 template.HTMLAttr 的边界。
-
Go http.Flusher 是 ResponseWriter 的可选能力接口。本文用一个流式 HTTP 处理器说明怎样运行时判断、写入后刷新、处理包装器降级,并解释为什么代理仍可能缓冲响应。
-
bufio.Reader.Peek 只预览数据,不会移动读取位置,但返回的 []byte 仍依赖 Reader 的内部缓冲区;Discard 或下一次读取后,这个切片不能再当成稳定快照。本文说明 Peek、Discard 与复制之间的边界,并给出协议头判断和安全保留数据的写法。
-
Go x/sync/semaphore.Weighted.TryAcquire 会在不阻塞调用方的情况下尝试获取指定权重的令牌,成功返回 true,失败返回 false 且不改变信号量状态。本文结合非阻塞入口、权重配对和失败回退说明实际写法。
-
Go netip.AddrPort.Compare 返回 -1、0、+1,并按 IP 地址优先、端口其次比较两个端点。本文用 sort.Slice 接入排序,同时说明 AddrPort{} 无效零值和端口 0 的边界。
-
Go regexp/syntax.EmptyOpContext 接收位置两侧的 rune,返回该位置满足的零宽断言组合。本文说明 -1 文本边界、换行、ASCII 单词字符和 EmptyWordBoundary 的判断规则,并给出可复用的 Go 示例。
-
使用 constant.StringVal 提取字符串常量的实际内容,区分 String、ExactString 的展示形式,并通过 Kind 避免把 Unknown 当作合法空字符串。
-
Go exec.Cmd 返回 error 时,不能只把所有错误都当成退出码。本文按 Start/Run、ExitError 和 ProcessState 拆分启动错误、非零退出和等待 I/O 错误,并给出可复用的判断代码。