Go教程技术文章
-
Go 的 io.MultiWriter 会把同一批字节按传入顺序写入多个 io.Writer,某个目标出错后立即停止。本文用文件和内存缓冲区示例说明用法、错误边界与并发注意事项。158 收藏 -
Go 的 binary.AppendUvarint 会把 uint64 按每组 7 位追加为变长字节序列。本文用已有前缀、连续追加、容量复用和 Uvarint 解码示例说明怎么用,以及 10 字节上限、截断输入和有符号整数的边界。156 收藏 -
Go fmt.Appendf 会把格式化结果追加到已有 []byte,并返回更新后的切片。本文说明如何接住返回值、连续追加字段、处理 len 与 cap 边界,以及 Go 1.19 之前的兼容写法。152 收藏 -
Go slices.SortedStableFunc 会把 iter.Seq 收集到新切片,再按比较器稳定排序;比较结果相等的元素保留原迭代顺序,空序列返回 nil。本文说明比较器写法、空结果边界,以及它与 SortStableFunc 的选择。152 收藏 -
Go text/template 的 FuncMap 函数可以通过第二个 error 返回值中止 Execute。本文用一个校验函数说明错误传播、ExecError 解包、部分输出和生产边界。151 收藏 -
用一个可切换位序的 Go LZW 往返小工具讲清 NewWriter 的 LSB 与 MSB 选择:GIF 用 LSB,PDF 用 MSB,自定义协议需显式约定,TIFF 应使用专用实现。150 收藏 -
Go 的 template.Clone 会复制基础模板及其关联模板命名空间,随后在副本中重新定义 block,便能生成互不污染的模板变体。本文用通知模板小项目演示默认块、局部覆盖、执行与测试。148 收藏 -
围绕 Go crypto/rand 生成安全令牌,说明随机预算、URL 安全编码、存储轮换边界与指标验证方法。145 收藏 -
Go 的 os.CreateTemp 通过 pattern 控制临时文件名前缀;加入星号还能指定随机段位置并保留扩展名。本文说明目录选择、清理责任与不同创建方案的适用边界。144 收藏 -
Go 1.22 起可以直接用 zip.Writer.AddFS 把 fs.FS 目录树写入 ZIP。本文说明 os.DirFS、fs.Sub、路径前缀、非普通文件和 Writer.Close 的关键边界。143 收藏 -
讲清 Go embed.FS 中 go:embed 匹配路径、fs.Sub 新根目录与 template.ParseFS 模式的对应关系,并给出避免重复目录和同名模板冲突的写法。140 收藏 -
net.Dialer.ControlContext 会在套接字创建后、真正拨号前提供受保护的 RawConn。本文给出 Linux 下设置 SO_SNDBUF 与 TCP_USER_TIMEOUT 的完整写法,并讲清双层错误、网络类型和跨平台边界。139 收藏 -
TestMain 适合管理每个包只启动一次的昂贵资源,但不应承载单个用例的可变数据。本文用共享 httptest 服务演示包级生命周期、不可变入口、用例命名空间、t.Cleanup 与退出码处理,让并行测试共享资源而不互相污染。134 收藏 -
用 Go parser.ParseExprFrom 解析单个表达式,结合 token.FileSet 还原文件名、行列和偏移,并说明语法错误时部分 AST 的处理边界。133 收藏 -
Go 的 zip.OpenReader 负责打开磁盘上的 ZIP 归档,真正按成员名读取要调用返回值的 Reader.Open。本文给出完整函数,讲清斜杠相对路径、成员不存在、目录成员、读取上限、ErrInsecurePath 与关闭顺序。130 收藏