Go语言技术文章
-
使用 strings.Builder 构造长字符串时,先校验空输入,再按片段和分隔符的字节数估算容量并调用 Grow。本文用一个可复用示例说明错误返回、Len、Cap、Reset 与 Builder 生命周期边界。458 收藏 -
使用 bytes.Cut 解析首个分隔符时,关键不是看 before 或 after 是否为空,而是读取 found。本文用一组覆盖空字段、缺少分隔符、空输入和空分隔符的示例,说明如何保留错误边界并安全复用原始字节切片。458 收藏 -
Go regexp 的关键不是把每次匹配都换成缓存,而是区分固定模式和动态模式:固定表达式用 MustCompile 在初始化阶段复用,动态表达式用 Compile 返回错误,并给缓存设置输入和容量边界。457 收藏 -
Go bytes.Buffer.Bytes 返回的是未读区切片视图,不是独立副本。本文说明 Read、Write、Reset、Truncate 为什么会让旧数据变化,并给出稳定快照的复制写法。457 收藏 -
Go 1.27 的 bytes.CutLast 可以按最后一次分隔符拆分字节切片。本文说明它与 Cut、LastIndex 的区别、未找到和空分隔符边界,以及返回原切片视图时何时需要 Clone。457 收藏 -
Go encoding/json/v2 的 UnmarshalRead 面向单个顶层 JSON 值,不能直接当作多值流循环入口。本文用 jsontext.Decoder 与 UnmarshalDecode 逐个读取 Reader 中的 JSON 对象,并说明 io.EOF、数组封装和错误边界。457 收藏 -
Go gob 接口字段需要注册实际承载的具体类型。本文用完整消息往返示例说明两端注册、类型断言与名称冲突的排查方式。457 收藏 -
讲清 Go encoding/xml Encoder.Indent 的 prefix 与 indent 参数,演示结构体和 token 编码的可读 XML 输出,并说明 Flush、MarshalIndent 与混合文本边界。457 收藏 -
Go 的 opentype.NewFace 通过 FaceOptions.DPI 设置字体栅格化所用的每英寸点数。本文用一个最小示例说明 DPI、Size、Metrics 与绘制坐标的关系。457 收藏 -
在 Gonum stat/distuv 中,Prob(x) 表示分布在 x 处的概率密度或点概率,CDF(x) 表示截至 x 的累计分布值。本文用一个 Go 小项目对比两者,并补充 Survival、Quantile 和离散分布的选择边界。457 收藏 -
go-imap 的 Unselect 只退出当前邮箱而不清理\Deleted邮件;UnselectAndExpunge 实际发送 CLOSE,会静默执行 EXPUNGE。本文用会话状态、数据影响和 Go 封装示例说明两者如何选择。457 收藏 -
Go go-echarts通过SetXAxis与AddSeries构造柱状图。本文用仓库收发数量示例说明BarData、分类顺序与多系列对齐,并处理缺失值、单位和HTML输出边界。457 收藏 -
Go 的 time.Format 布局中的 MST 只是时区缩写占位符,不会单独完成时区转换。本文区分 MST、数值偏移、Location 和 In 的职责,并说明带缩写字符串解析时的零偏移边界。457 收藏 -
ast.IsGenerated 依赖解析时保留的标准生成注释。通过解析模式、固定前后缀及标记位置的对照示例,说明返回 false 的常见原因与工具使用范围。457 收藏 -
围绕 Go net/http 请求体上限,说明为什么不能直接 io.ReadAll,如何用 MaxBytesReader 在解析前限制正文,并识别 *http.MaxBytesError 返回 413。457 收藏