Go语言技术文章
-
Golang · Go教程 | 2星期前 | 接口 · 标准库 · go · Go AppendBinary encoding.BinaryAppender BinaryMarshaler 二进制编码
Go encoding.BinaryAppender 的 AppendBinary 接收已有字节切片并返回追加后的结果。本文说明如何保护已有前缀、避免保存调用方缓冲区,并让 BinaryMarshaler 与追加编码保持同一语义。463 收藏 -
本文围绕 golang.org/x/tools/go/analysis 的 Pass.Reportf,说明怎样从 AST 节点或原始文件行号取得 token.Pos,并提交带源码位置的静态分析诊断。463 收藏 -
Go sync.Pool 只适合复用可丢弃的临时对象。本文说明 Get 后如何建立初始状态、Put 前如何清理切片和引用,并用 defer 覆盖错误路径,避免旧数据带入下一次使用。463 收藏 -
Go INI 的大小写不敏感不是只放宽查询,而是会把节名和键名规范化为小写。本文解释三个开关的作用、冲突覆盖风险与稳妥配置方式。463 收藏 -
Go go-wav通过ReadInfo解析格式信息,再从Format读取采样率与声道、从SampleBitDepth读取位深。本文提供原创函数,说明错误检查、编码标识、文件关闭及格式声明与完整解码的区别。463 收藏 -
Go 反射修改字段时 CanSet 为 false,通常是值不可寻址、字段未导出或取错了 Value 层级。本文用一个小型反射检查器说明安全修复方式,并解释 unsafe 为什么不能直接把原 Value 变成可设置。463 收藏 -
Go 的 FindAllStringSubmatchIndex 返回的是按匹配分组排列的字节索引矩阵。本文用 nil、[-1,-1] 和 [k,k] 三个结果区分整体无匹配、子表达式未参与和空字符串匹配,并给出安全切片与 n 参数的排查写法。463 收藏 -
Go bufio.Scanner读取长行时需在首次Scan前配置Buffer,并独立限制业务字节数。本文结合完整示例说明空结果、Err检查、Bytes生命周期和文件关闭的处理方法。463 收藏 -
Go 的 gzip.Reader 默认会合并读取连续 gzip 成员;需要保留成员边界时,应关闭 Multistream,读到 io.EOF 后保存当前 Header,再通过 Reset 读取下一个成员。本文同时说明校验错误、底层 io.ByteReader 和资源关闭责任。463 收藏 -
Go 服务启动时监听端口失败,先区分地址已占用、地址族不匹配和权限问题,再用 ss、lsof 及最小化 Go 复现确认根因。462 收藏 -
Go 的 iter.Pull 把 push 风格的 iter.Seq 转成 next 和 stop 两个函数,适合需要逐个取值的场景。本文用可运行示例说明 next 的结束信号、提前停止时 defer stop 的必要性,以及不能并发调用 next 和 stop 的边界。462 收藏 -
依赖升级后版本仍不如预期,通常不是 go get 失效,而是 MVS 按完整模块图计算了 build list。本文用三组 Go 命令定位谁抬高了版本,并处理 replace、exclude 与工作区边界。462 收藏 -
Go 的 bytes.Buffer.Bytes 返回的是共享底层存储的未读区域切片。本文区分 Read、Write、Reset、Truncate 带来的视图失效与真实覆盖,并给出安全复制方案。462 收藏 -
sync.Pool 适合复用可丢弃的临时缓冲区,而不是业务状态或必须长期保留的资源。本文用 bytes.Buffer 和 []byte 说明 Reset、归还时机、异常容量清理与收益判断。462 收藏 -
Go 1.26 重写 go fix,以 modernizer 和 Go analysis 框架批量改写受支持的旧式标准库与语言用法。本文给出 fixer 盘点、-diff 预览、分批落盘、多平台覆盖和测试审查清单,并说明它不会自动迁移所有废弃 API。462 收藏