Go教程技术文章
-
Go strconv.QuoteToGraphic 返回双引号 Go 字符串字面量,保留 Unicode 图形字符并把制表符、换行等非图形字符转成 Go 转义。本文说明输入边界、与 QuoteToASCII 的区别,以及日志和配置展示中的选型方法。242 收藏 -
用 Go slices.Compact 编写按行去重工具,区分相邻去重和排序后全局去重,提供完整代码、输入容量限制、错误处理与数量对比,并说明性能测量和切片共享的边界。242 收藏 -
让 json.Encoder 直接写最终 Writer,减少应用层字节和字符串往返;需要暂存时复用 Buffer,同时处理容量保留、Bytes 借用、并发和错误边界,不承诺零分配。242 收藏 -
Go 泛型约束中的 ~ 不是装饰符,而是把底层类型纳入类型集的边界工具。本文从一个可复现的金额类型例子出发,区分精确类型、底层类型和接口约束,给出编译器核对方法与选型清单。241 收藏 -
用 Go 的 math/big.Int.FillBytes 把大整数写入固定长度的大端字节字段,理解绝对值、左侧补零和容量不足 panic 的边界,并给出可验证的协议字段校验写法。241 收藏 -
Go 的 os/exec 使用 StdoutPipe 或 StderrPipe 时,真正容易卡住的通常不是少写一个 Close,而是读取未完成就 Wait,或子进程继承了输出管道。本文给出无手工管道和并发读取两种写法,并整理取消、错误处理与 EOF 排查要点。241 收藏 -
讲清 Go slices.Delete 删除后 len、cap、尾部清零和底层数组持有之间的区别,并给出 Delete、Clip 与复制收缩的选择方法。241 收藏 -
Go multipart.Reader 的 ReadForm 不会让所有文件都永久驻留内存,但 maxMemory 只控制解析预算的一部分。本文用 MaxBytesReader、ReadForm 和 RemoveAll 组合出可控的上传处理方案,并解释 ErrMessageTooLarge、临时文件和部件数量限制。241 收藏 -
用 host:port 配置示例说明 Go flag.Value 的 String 和 Set 方法、flag.Var 注册方式、非法输入处理以及重复设置策略。241 收藏 -
用 Pond v2 的 NewSubpool 设置局部并发上限,解释子池与父池的共享额度、任务结果等待、退出顺序,以及资源预留误解和嵌套等待风险。241 收藏 -
Go types.Sizes.Alignof 描述目标模型中的对齐要求,不能直接代替字段偏移或填充。本文用结构体示例配合 Offsetsof、Sizeof,说明架构选择与布局报告的边界。241 收藏 -
crypto/rand.Int 返回 [0,max) 范围内的均匀安全随机整数,但 max <= 0 会触发 panic。本文从上界边界、big.Int 构造、错误处理和取模偏差四个角度给出可直接复用的 Go 写法。241 收藏 -
遍历 database/sql.Rows 时,Next 返回 false 不代表一定成功。本文区分 Scan、Rows.Err 与 Rows.Close 的职责,说明自然遍历结束、提前停止和驱动关闭错误的处理顺序。241 收藏 -
Go 1.27.1 是小版本升级,但官方修复范围触及 cgo、编译器、runtime 和多个标准库。本文把这些范围映射成构建、运行与接口行为回归矩阵,帮助项目决定直接升级、灰度还是保留临时回退开关。240 收藏 -
Go 的 string 下标按 UTF-8 字节计算,直接截取中文可能产生乱码。本文用 []rune、range 和 unicode/utf8 说明安全的按字符截取、计数与非法编码处理方式。240 收藏