Go教程技术文章
-
filepath.Rel 只按路径字符串计算相对关系,不会替你解析符号链接。本文用 Go 标准库演示先统一解析根目录与目标路径,再计算相对路径,并拆开解析失败、路径不兼容和目标尚不存在等边界。193 收藏 -
调用方先准备递增有序的切片,把同一份缓冲区反复传给 slices.BinarySearch;文章说明如何区分命中索引、未命中插入位置和结果容器分配。193 收藏 -
Go database/sql.ColumnTypes 可以读取动态查询结果的列名、数据库类型名和可空信息。本文说明 Name、DatabaseTypeName、Nullable 的边界,重点解释 Nullable 的 ok=false 为什么不能当成不可空。191 收藏 -
围绕 Go maps.Keys 讲清无序键迭代、slices.Sorted 排序、空映射 nil 结果、后续值读取与并发写入边界。191 收藏 -
Go 1.23 起,range over func 可以用 yield 的布尔返回值把消费者的 break 传回函数迭代器。本文用批处理示例说明如何及时停止底层遍历、避免物化中间切片,并区分减少额外分配与保证零分配的边界。190 收藏 -
本文从大文件不应整段复制的场景出发,用 Go io.SectionReader 按绝对偏移和区间长度创建读取窗口,说明 Read、ReadAt、Seek、Size、EOF、文件关闭和 ReadAll 的边界。189 收藏 -
Go archive/tar 默认可能把 ModTime 按秒写入;指定 FormatPAX 后,归档可以保留文件修改时间的亚秒部分。本文给出写入、读取核对和格式边界。188 收藏 -
Go sort.Find 用二分查找返回有序数据中第一个满足比较条件的位置,并通过 found 区分是否精确命中。本文从三态比较函数、重复值、未找到边界和结构体切片几个场景说明怎样写对。187 收藏 -
在 Go 的 io/fs 接口前判断路径是否合规,重点说明 ValidPath 对 slash 分隔、未根路径、点段、空元素和根目录 . 的边界,并给出可直接复用的入口函数。187 收藏 -
Go image/jpeg 的 Options.Quality 取值范围是 1 到 100,默认值为 75。本文按缩略图、网页上传和归档等用途给出质量参数的选择起点,并说明 Encode 的传参、体积与细节的权衡,以及 PNG、透明图和反复编辑场景的边界。186 收藏 -
Go strings.Cut 处理可选字段时,关键是同时保留 before、after 和 found:字段不存在与字段存在但值为空不能混为一谈。本文用首个键值分隔符的解析例子说明返回值、空分隔符、可选字段结构,以及 Cut 与 SplitN、CutPrefix、CutSuffix 的边界。186 收藏 -
maps.Clone 返回新的浅拷贝,不能把已有 map 当作写入目标。若要反复刷新同一容器,应按需求使用 maps.Copy,要求精确替换时先 clear 再 Copy,并注意 slice、指针等 value 仍是浅拷贝。185 收藏 -
用 slog.HandlerOptions.Level 过滤 DEBUG 日志,并用 slog.LevelVar 在运行时切换最低级别,掌握默认 Logger、Enabled 和多 Handler 的边界。183 收藏 -
本文说明怎样使用 regexp/syntax.Parse 把 Go 正则模式解析成语法树,并递归读取 Op、Sub、Rune、Min、Max 与 Name,最后区分解析错误和后续匹配结果。182 收藏 -
用 Go 的 compress/flate 读取不带 zlib 或 gzip 外层封装的原始 DEFLATE 数据,讲清 NewReader、NewReaderDict、EOF、损坏输入和流复用的边界。180 收藏