Go语言技术文章
-
huh 表单结束后变量仍是旧值,通常是 Value 绑定了副本、变量被遮蔽,或 Run 没有完成。本文给出指针绑定、状态判断和 Key 读取的排查方法。103 收藏 -
Go toolchain 自动下载失败时,可以根据项目是否允许升级,选择 GOTOOLCHAIN=local 或 go1.x.y+path 固定本地工具链,并检查 go.mod、go.work 与 PATH 中的版本关系。103 收藏 -
使用 Go sync.OnceValue 缓存一次计算值,排查重复创建 getter、初始化阻塞与可变返回值共享问题,并说明 panic、零值和缓存生命周期的注意点。103 收藏 -
Go 的 nil map 可以读取、遍历和删除,但不能写入。本文用缓存索引示例说明 make 初始化、惰性初始化、双值读取和回归检查,避免 assignment to entry in nil map。103 收藏 -
围绕 ResponseWriter 包装导致的 http.Flusher 断言失败,说明安全断言、Unwrap 透传和 ResponseController 兜底的兼容写法。103 收藏 -
Go TLS 出现 unknown authority 时,按服务端证书链、系统根证书池、私有 CA、自定义 RootCAs 和容器证书包逐项排查,避免用 InsecureSkipVerify 绕过校验。103 收藏 -
Go net/http.NewFileTransportFS 可以把 fs.FS 接成 HTTP 客户端的 RoundTripper,常用于通过 file 协议读取本地目录或嵌入文件系统。本文说明 RegisterProtocol、路径映射、io.Seeker、响应体关闭和混合 Transport 的使用边界。103 收藏 -
Go maps.Clone 可以复制一个新的 map 容器,修改标量值不会影响原 map,但它是浅复制,切片和指针等值内部仍可能共享。本文用故障复盘方式说明复制、验证和边界处理。103 收藏 -
Go x/text/encoding/korean 的 Decoder 复用前为什么要 Reset?关键在于把 Reset 当作转换器生命周期边界,而不是把它误解成每次都能修复错误编码。当前 EUC-KR 解码器是无持久状态实现,但生产代码仍要隔离复用、Reader 生命周期和并发所有权。103 收藏 -
Go strings.CutPrefix 返回 after 和 found 两个结果:前缀匹配时移除一个前缀,未匹配时保留原字符串并返回 false。本文用代码、表格和边界清单说明如何正确处理。103 收藏 -
Go Starlark 的 starlark.List 不能直接作为字典键,因为它的 Hash 方法明确返回不可哈希错误。本文从 SetKey 的错误现场出发,说明列表、元组、稳定字符串和业务 ID 的选型边界。103 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · csv · Go教程 · csv Go error FLUSH CRLF encoding/csv Writer.UseCRLF Windows换行
Go encoding/csv 的 Writer 默认使用 LF 换行;需要兼容依赖 CRLF 的 Windows 工具时,应在第一次 Write 前设置 UseCRLF=true,并在写入后正确调用 Flush 和 Error。本文按接口契约说明设置时机、错误边界和跨平台取舍。103 收藏 -
Golang · Go问答 | 1星期前 | 反射 · unsafe · 指针 · 垃圾回收 · Go问答 · Go 反射 垃圾回收 unsafe.Pointer uintptr runtime.KeepAlive Value.Pointer UnsafeAddr
Go 反射得到的 Pointer 或 UnsafeAddr 结果是 uintptr,不能像引用一样保活对象。本文区分立即转换、uintptr 暂存、runtime.KeepAlive 和低层调用参数四种场景,给出排查清单与安全边界。103 收藏 -
context.WithCancelCause 让调用方既能判断上下文已经取消,又能读取导致取消的具体错误。本文用一个可复用的 worker 示例说明 cancel、Cause、父子上下文和 nil cause 的边界。103 收藏 -
本文用一个小项目说明 Go html/template 如何让用户输入按 HTML 上下文自动转义,并把模板解析放到初始化阶段、在批处理循环中复用模板与 bytes.Buffer,减少无意义的重复分配。103 收藏