Go教程技术文章
-
Go fastjson 在重复解析JSON时可以复用 Parser,减少反复创建解析器和临时对象的分配压力。本文说明 Parser、Value、ParserPool 的生命周期边界,并给出可直接改造的代码结构。385 收藏 -
Go unicode/utf8.RuneStart 只能判断单个字节是否可能是 UTF-8 编码的首字节,不能代替完整校验。本文用分块扫描、DecodeRune 和 Valid 的组合说明 ASCII、续字节、非法字节与不完整尾部的处理边界。385 收藏 -
Go html/template 的 missingkey 只控制 map 缺失键在执行阶段的行为。本文用一个可复用示例说明 default、zero、error 的差别,并区分结构体字段错误、Execute 返回值和生产场景的选择。384 收藏 -
Go 的 x/text/encoding/unicode.UTF8BOM 会在编码输出开头加入 UTF-8 BOM,并在解码时剥离开头 BOM。本文比较一次性 Bytes 转换与 transform.NewWriter 流式写入,说明 EF BB BF、Close 和 UTF8 选择边界。384 收藏 -
Go net/http 的 MaxBytesReader 可以限制请求体读取大小,但超限时不能靠字符串比较来判断。本文用 errors.As 识别 *http.MaxBytesError,说明 Limit 字段、413 响应、普通读取错误和关闭顺序的处理边界。384 收藏 -
Go sync.Mutex.TryLock 用 bool 结果表示本次是否立即拿到锁:true 才能进入临界区并负责 Unlock,false 不会建立同步关系。本文结合可跳过任务说明判断、解锁和使用边界。384 收藏 -
maps.Equal 适合比较值可比较的 map;遇到切片或嵌套 map,要用 EqualFunc 把值比较规则交给 slices.Equal 或递归的 maps.Equal。本文整理类型约束、nil 边界和 NaN 键等容易误判的情况。383 收藏 -
Go testing.T.FailNow 只能由运行测试函数的 goroutine 调用。本文解释 FailNow、Fail 和 Fatal 的停止语义,说明子 goroutine 误用为何导致误通过或清理失控,并给出错误回传、取消和等待 worker 的安全组织方式。383 收藏 -
用组合字符昵称场景讲解Go uniseg字素簇遍历,通过Next、Str和Positions保留完整组合序列,并实现前缀截取,区分字节、rune、宽度与规范化。383 收藏 -
使用 Go hash/crc32 在分块读取文件、上传内容或消息流时持续计算 CRC32,掌握 Sum32、Sum 和 Reset 的用法与边界。383 收藏 -
本文用 Go slices.Compact 压缩连续重复元素,说明它怎样保留原切片顺序、原地复用底层数组、处理尾部元素,以及什么时候应改用 CompactFunc。383 收藏 -
用 Go fs.Sub 从 embed.FS 派生独立子文件系统,说明路径映射、HTTP 静态服务、目录缺失检查和安全边界。382 收藏 -
Go netip.Prefix.String 返回 CIDR 文本,但 PrefixFrom 可能保留主机位。本文说明 String、Masked、IsValid 与 MarshalText 的边界和实用写法。382 收藏 -
Go 使用 golang.org/x/text/currency 的 Kind.Rounding 查询货币显示规则,理解 scale 与 increment 两个返回值,并据此区分标准、现金和会计场景的调用策略。382 收藏 -
Go Cron 关闭时不要只调用 Stop 就退出进程。Stop 会停止新的调度,并返回一个 Context;等待它的 Done 通道,才能等正在执行的任务结束。本文再补上退出超时和任务主动取消的边界。382 收藏