Go教程技术文章
-
从切片别名、append 扩容和底层数组保留三个角度,说明 Go slices.Clone 的适用边界,并用可运行示例验证复制后的修改、nil 语义与内存释放判断。126 收藏 -
用 Go 的 net/http.ServeContent 搭一个可验证的文件下载接口,拆清 Range、If-Modified-Since 与 Last-Modified 的判断边界。125 收藏 -
Go 的 strings.Cut 会同时返回分隔符前后文本和 ok 标志,分隔符缺失时前半部分保留原字符串、后半部分为空。本文用配置解析和并发无关的最小示例,说明如何区分缺失、空字段与正常切分。125 收藏 -
用 Go slices.Chunk 把一批记录切成分页批次,重点说明尾批、空输入、n 校验和切片别名风险,并给出可复现的基线与验收方法。123 收藏 -
archive/zip.NewReader 要求 io.ReaderAt 和准确的字节大小,不能直接接收只有顺序读取能力的网络流。本文从接口边界出发,比较 bytes.Reader、临时文件和流式解压三种路径,给出资源释放、尺寸校验与安全路径检查的实用写法。123 收藏 -
Go 1.23 为 math/rand/v2.ChaCha8 增加了 Read 方法,适合从独立的确定性随机源批量取字节。本文从 NewChaCha8、Read、Uint64 交错调用和 Seed 重置入手,排查为什么同一道测试会出现不同字节序列,并给出并发隔离的写法。122 收藏 -
Go 的 map range 顺序没有稳定保证,同一张 map 也不能把第一次遍历结果当成下一次的顺序。本文用一个最小示例说明随机化边界,并给出测试、日志和接口输出需要排序时的可靠写法。119 收藏 -
Go 测试里临时目录、环境变量和共享资源容易在失败路径上残留。本文用 testing.T.Cleanup 拆解注册时机、后进先出顺序、子测试继承和并行测试边界,给出可运行的测试写法与验收清单。114 收藏 -
Golang · Go教程 | 1天前 | 日志 · 标准库 · time · go · Go时间格式化 encoding.TextAppender Go time.Time.AppendText RFC3339Nano
Go 1.24 为 time.Time 增加 AppendText,可把 RFC 3339 纳秒时间直接追加到已有字节切片。本文对比 Format 与 MarshalText,说明错误返回、时区偏移和日志字段复用的边界。113 收藏 -
time.After 适合一次性等待,但把它放进长循环后,定时器生命周期和退出路径就需要重新审视。本文用可运行的 Go 代码拆开一次性等待、可停止计时器与循环复用的边界。112 收藏 -
使用 embed.FS 提供嵌套资源时,fs.ValidPath 负责判断资源名是否符合 io/fs 约定,fs.Sub 再把目录边界固定下来。本文用最小示例验证路径校验、子文件系统和读取失败的边界。112 收藏 -
Go 的 http.ServeContent 已经处理了文件下载中的 Range 和 If-Modified-Since,但 ETag 需要应用自己补上。本文用一个小型下载接口拆开请求头、响应状态与验收方式,避免把 200、206、304 混成一种成功。111 收藏 -
time.Duration.String 会自动选择合适单位,但负值、纳秒尾数和日志截断常让排查结果失真。本文用可复现实例说明 String 与 Truncate 的边界。110 收藏 -
Go 1.24 引入 runtime.AddCleanup 后,资源包装对象可以把兜底清理与显式 Close 分开。本文用一个文件描述符包装示例说明 AddCleanup、Cleanup.Stop、KeepAlive 的调用边界,以及为什么它不能替代显式关闭。108 收藏 -
Go 1.26 的 errors.AsType 用泛型简化错误类型提取。本文用 PathError 和 ErrNotFound 讲清返回值、零值、errors.Is 以及旧版本兼容边界。106 收藏