Go语言技术文章
-
Golang · Go教程 | 4星期前 | html · 模板 · Go教程 · html/template · Go html/template HTML转义 模板安全 template.HTML 上下文自动转义
Go html/template 默认把数据当作普通文本,并按 HTML、属性、URL、JavaScript 等上下文自动转义。本文用三类输入对照 template.HTML 的信任边界,说明怎样保留可信标签而不把不可信字符串直接当成 HTML。281 收藏 -
Go go.mod 中的 go 行声明模块可接受的最低 Go 版本,toolchain 行声明开发时更倾向使用的工具链;GOTOOLCHAIN 决定是否自动切换。文章从实际协作场景出发,给出配置、排查和 CI 固定版本的方法。281 收藏 -
复用 Go time.Timer 时,Go 1.22 及更早版本要先 Stop 并排空通道再 Reset;Go 1.23 起通道型 Timer 的 Reset 语义消除了旧事件残留。本文按版本、通道所有权和 AfterFunc 边界给出可直接采用的处理方案。281 收藏 -
sync.Map 不是普通 map 的默认替代品。本文从访问模式、类型安全、复合更新和遍历语义四个角度,说明什么时候适合使用 sync.Map,什么时候应保留 map 配合 Mutex 或 RWMutex。281 收藏 -
Go mime/multipart 读取 multipart 数据时,NextRawPart 会保留 quoted-printable 等原始传输编码。本文用最小示例说明 boundary 解析、io.EOF 判断、Part 读取和 NextPart 的选择边界。281 收藏 -
用 google/uuid 的 MarshalBinary 和 UnmarshalBinary 在二进制协议中读写固定 16 字节 UUID,并处理短写、半包、长度错误与文本格式边界。281 收藏 -
Go net/url.URL 的 Opaque 用于表示 scheme:opaque 形式的不透明数据。本文从字段关系、String 序列化和 RequestURI 输出说明它与 Host、Path 的边界。280 收藏 -
Go 调整 GOGC 后暂停时间没有明显变化,通常不是参数没用,而是 GOGC 只改变目标堆大小和 GC 频率,单次暂停还可能受根扫描、调度停顿、GC assist 与分配突增影响。本文按证据拆分根因并给出修复边界。280 收藏 -
Go 的 slice 不能直接作为 map key,因为 slice 不支持完整的 == 比较。本文用 string、定长数组和可比较 struct 给出按内容与复合条件建索引的替代方案,并说明 any、泛型和长度边界。280 收藏 -
Go gzip 读取报校验错误时,部分明文不能直接使用。本文用完整文件读取示例区分校验不匹配、截断和其他错误,说明暂存提交、Close 与资源限制的边界。280 收藏 -
Go 的 testing.T.Setenv 可以在单个测试生命周期内设置环境变量,并在测试结束时自动恢复。本文说明最小写法、子测试继承、并行限制和可替代的依赖注入方案。280 收藏 -
用Go fs.Sub把资源子目录作为组件的新根,通过完整内存文件示例解释相对路径、目录列举、读取错误以及文件访问隔离的边界。280 收藏 -
webdav.Dir 接收的是本机文件系统根目录,而 WebDAV FileSystem 方法接收的是用斜杠分隔的逻辑资源名。本文说明两种路径的边界,并提醒 Dir 不会自动阻止目录内符号链接指向树外。280 收藏 -
用 http.Transport.Clone 从基础 Transport 创建客户端专属副本,说明导出字段复制、请求前配置、空闲连接关闭和并发修改边界,避免多个 http.Client 共享配置时互相影响。280 收藏 -
Go testing.T.Errorf 等价于记录格式化错误日志后调用 Fail:当前测试会被标记为失败,但函数仍会继续执行。本文用表格测试说明如何保留多个失败项,并对比 Fatalf 的立即停止边界、前置条件判断和并发调用注意事项。280 收藏