Go语言技术文章
-
Paho MQTT 的 OrderMatters 默认开启时,消息回调不能阻塞或直接调用可能阻塞的库函数。本文解释它与消息顺序、回调 goroutine、worker queue 和 Publish 等操作的关系,并给出两种安全写法。493 收藏 -
通过Problem、Minimize与NelderMead实现自定义标量函数最小化,说明变量维度、方法契约、计算预算及候选结果的解释。493 收藏 -
读取 EUC-KR 或 CP949 保存的旧韩文文本时,不能直接把原始字节转换成 UTF-8 字符串。本文用 golang.org/x/text/encoding/korean 的 EUCKR 解码器接入 transform.Reader,给出整文件读取、流式复制、错误处理和内存取舍。493 收藏 -
fmt.Sscanf 适合解析结构稳定的字符串:用格式模板约束字段位置,用指针接收值,再同时检查扫描数量和 error。普通动词会按扫描规则处理空白,%c 则直接读取下一个字符。493 收藏 -
Go time.Ticker 停止后循环仍不退出,关键在于 Stop 不关闭 C。用 context 取消、defer Stop 和完成通道划分职责,并说明 Go 1.23 回收语义及回调阻塞边界。493 收藏 -
请求结束后仍要完成异步任务时,先用 context.WithoutCancel 脱离请求取消,再用 context.WithTimeout 设置独立期限;本文同时说明值传递、取消边界和常见误区。493 收藏 -
maps.Clone 会复制 map 的键和值,因此 map[string]error 中的错误值、Error 文本和错误链入口都会保留;但它是浅拷贝,不会复制错误对象内部的指针、切片或自定义可变状态。492 收藏 -
通过 bufio.Reader.Peek 直接查看 Reader 内部缓冲区中的前缀,避免为短暂判断创建副本;同时讲清 Reset 复用 Reader、短读错误、ErrBufferFull 与返回切片的生命周期。492 收藏 -
Go go-colorful 怎样生成具有区分度的配色集合:比较 SoftPalette、FastHappyPalette 和 SoftPaletteEx 的适用场景、错误处理与回退方式。492 收藏 -
Go errors.Join 可以把多个校验错误合并成一个返回值,同时保留 errors.Is 和 errors.As 的判断能力。本文从一个批量配置校验器出发,说明 nil 过滤、哨兵错误、自定义错误类型和错误展示之间的边界。492 收藏 -
Go x/text/width 提供的是 Unicode 宽度属性分类,不是字体渲染后的屏幕像素测量。本文区分 width.Kind、rune、UTF-8 字节数和布局引擎,并给出按目标选择 API 的排查方法。492 收藏 -
Go 1.27 的 go fix atomictypes 可以把 sync/atomic 原始函数迁移为强类型原子包装器。本文从预览命令、访问边界、版本前提和人工复查说明这项现代化应该怎样安全落地。492 收藏 -
Go 用 os.OpenFile 创建文件时,perm 只是 Unix 上 umask 处理前的请求值;本文区分新旧文件、O_TRUNC 与跨平台权限语义,帮助定位不同机器上的权限差异。492 收藏 -
Go 的 crypto/tls 客户端不会从 TCP 连接地址自动猜证书名称。本文说明 ServerName 为空时为何握手失败,以及域名、IP 地址和上层 HTTP 客户端应该如何配置名称校验。491 收藏 -
用 Found 区分 bytes.Cut 的分隔符缺失与空字段,附可复用 CutFields 完整示例,说明首次切分、空输入、空分隔符与返回切片共享缓冲区的处理方法。491 收藏