Go教程技术文章
-
用 Go log/slog.Value.Resolve 展开 LogValuer 延迟字段,说明自定义 Handler 如何遍历 Record.Attrs、处理 Group,以及递归和错误边界。190 收藏 -
用 Gonum stat.LinearRegression 拟合一元线性回归,说明 x、y 样本、权重、origin 参数、截距斜率和 R² 的关系,并给出适合工程读数的判断边界。190 收藏 -
Go 1.23 起可以用 maps.Keys 把 map 的键暴露为迭代器;如果输出、日志或测试需要稳定顺序,再交给 slices.Sorted 或 slices.SortedFunc 生成新的键切片。本文按调试清单说明版本、顺序和键类型边界。190 收藏 -
Go 1.23 起,range over func 可以用 yield 的布尔返回值把消费者的 break 传回函数迭代器。本文用批处理示例说明如何及时停止底层遍历、避免物化中间切片,并区分减少额外分配与保证零分配的边界。190 收藏 -
Go 的 net.LookupTXT 返回的是 TXT 记录切片,同一条记录的多个字符串片段已经被拼成一个字符串;本文说明如何保留多条记录边界、设置查询超时并做长度统计。190 收藏 -
bytes.Buffer.Truncate 处理的是未读窗口:它保留前 n 个未读字节并丢弃后面的内容。本文区分 Read、Next、Truncate、Reset 的边界,说明如何消费前缀、截断尾部以及避免参数越界和切片失效。189 收藏 -
本文从大文件不应整段复制的场景出发,用 Go io.SectionReader 按绝对偏移和区间长度创建读取窗口,说明 Read、ReadAt、Seek、Size、EOF、文件关闭和 ReadAll 的边界。189 收藏 -
Go 1.26 让 new 接受初始值表达式,可以直接创建 *int、*bool、*string 等可选字段。本文对比 new(T) 的零值语义、new(x) 的类型推导、JSON 中 nil 与显式零值的区别,并给出旧工具链的兼容写法。189 收藏 -
Go netip.Prefix.Bits 直接返回 CIDR 前缀长度,合法范围取决于 IPv4 或 IPv6 地址族;无效 Prefix 返回 -1。本文用 ParsePrefix、PrefixFrom 和 Masked 说明读取、校验与地址规范化的边界。188 收藏 -
Go 1.24 引入的 os.Root 可以把文件操作限制在指定目录内。本文用 Root.Stat 获取 FileInfo,判断普通文件、目录和符号链接,并说明相对路径、越界路径、错误处理以及 Stat 与 Lstat 的区别。188 收藏 -
Go strconv.AppendQuote 会把字符串追加成带双引号的 Go 字符串字面量。本文用日志字段示例说明如何复用 []byte 缓冲区、处理引号和控制字符,并比较 AppendQuote、Quote、QuoteToASCII 与 AppendQuoteRune 的使用边界。188 收藏 -
Go archive/tar 默认可能把 ModTime 按秒写入;指定 FormatPAX 后,归档可以保留文件修改时间的亚秒部分。本文给出写入、读取核对和格式边界。188 收藏 -
Go strings.Lines 返回一次性 iter.Seq[string],适合按行惰性遍历字符串。本文说明换行符归属、空字符串、连续换行和没有末尾换行的尾行处理,并比较它与 SplitAfter 的使用边界。187 收藏 -
Go strconv.AppendQuote 会把字符串字面量直接追加到 []byte 缓冲区。本文说明如何复用 dst、处理转义膨胀,并判断容量不足时仍可能发生的扩容。187 收藏 -
讲解 JSON Pointer 对斜杠及波浪线的编码,通过完整 Go JSONPatch 示例区分单个成员和嵌套路径,并说明逐段构造、JSON 字符串编码与补丁错误处理。187 收藏