Go教程技术文章
-
Golang · Go教程 | 4小时前 | 标准库 · 错误处理 · Go教程 · Go image/png image.Config png.DecodeConfig PNG尺寸 png.Decode
png.DecodeConfig 可以先返回 PNG 的颜色模型、宽度和高度,不创建完整 image.Image。本文说明如何用它做尺寸边界判断,再用可重复 Reader 调用 Decode,避免把配置读取和完整解码混在一起。369 收藏 -
Go 1.25 继续完善 runtime.AddCleanup 的并发清理能力。本文从文件描述符这类外部资源出发,说明它与 SetFinalizer 的语义差异、必须保留的显式 Close,以及 GODEBUG 检查方式。368 收藏 -
bytes.Buffer.Bytes 返回的是仍由缓冲区管理的切片视图,不是独立副本。本文通过复用、写入和复制三个场景,说明如何判断别名风险,以及什么时候该用 bytes.Clone 或 append(nil, b.Bytes()...) 保留稳定数据。368 收藏 -
用 log/slog 的 Enabled 判断和 LogAttrs 组织一次可验证的小实验,说明低级别日志何时被丢弃、昂贵属性何时仍会提前计算,以及 HandlerOptions.Level 与 LevelVar 的边界。368 收藏 -
Go 的 unicode/utf8.RuneStart 只能判断字节是否可能位于一个 UTF-8 字符的起点,不能单独完成合法性校验。本文用切片扫描、DecodeRune 和 Valid 的组合处理截断与非法序列。368 收藏 -
Go 1.27 的 go fix 新增 unsafefuncs modernizer,可把特定的 unsafe.Pointer 与 uintptr 算术改写为 unsafe.Add。本文用最小代码说明改写对象、版本门槛和人工复核边界。368 收藏 -
Go slices.Replace 可以把切片的半开区间替换成任意数量的新元素。本文用权限列表和批处理记录说明变长替换、空替换、索引边界、底层数组复用与结果判断,帮助你写出可复查的切片更新代码。368 收藏 -
用Gonum stat计算带权均值、样本方差和总体方差,结合频数示例说明输入约束、分母差异与权重归一化的影响。368 收藏 -
Go 源码分析工具处理内存 []byte 时,需要先为 token.File 注册同样的文件大小,再用 SetLinesForContent 建立行首字节偏移表。本文说明 Position、Lines、换行、UTF-8、//line 注释与 SetLines 的边界。368 收藏 -
Go 1.24 新增的 regexp.Regexp.AppendText 可以把已编译正则追加到已有 []byte。本文用一个带前缀缓冲区示例说明返回值、错误处理、与 String 的关系及 POSIX/Longest 的输出边界。368 收藏 -
go/token 把源文件位置压缩成 Pos,真正输出错误时还要经过 FileSet.PositionFor。本文用多文件和 //line 场景说明 adjusted、文件偏移与诊断文本如何对应,并给出可复现的核对方式。367 收藏 -
用 Go 的 httptest.ResponseRecorder 测试 Handler 输出,分别检查状态码、响应头和响应体,并解释 Result、Code 与 HeaderMap 的使用边界。367 收藏 -
通过实现 json.Marshaler,让 Go 枚举在 JSON 中输出可读文本,并对未知整数返回明确错误。367 收藏 -
Go 中 bufio.Writer.Write 成功并不代表底层资源已经写入,Flush 才会把缓冲内容交给文件、网络或自定义 io.Writer。本文说明 Flush 报错的原因、Write 与 Flush 的边界,以及文件、重试和 Sync 的处理清单。367 收藏 -
Go 的 bufio.Reader.Peek 只观察并不推进读取位置。本文用固定协议头示例说明如何先判断、再精确消费,处理 ErrBufferFull、短输入和预览切片生命周期,避免头部丢失或重复读取。367 收藏