Go语言技术文章
-
io.EOF 通常表示输入已经正常耗尽,不是业务失败。本文用 io.Reader 和 io.ReadFull 对比正常结束、数据未消费、结构化截断与真实读取错误的处理边界。141 收藏 -
Go errgroup 首个错误后其他任务仍运行,通常不是取消失效,而是 worker 没有监听派生 Context,或使用了零值 Group。本文拆开错误传播、取消信号与 Wait 收敛的边界,并给出可协作退出的代码结构。141 收藏 -
用 Go net/http Cookie 配置 SameSite 与 MaxAge,区分跨站发送策略、存活秒数和删除语义。141 收藏 -
解释 Go channel 关闭后 len 与 cap 的实际含义,演示如何用双值接收排空缓冲数据,并说明为什么不能用 len(ch)==0 判断关闭状态。141 收藏 -
Go os.CopyFS 可以把 embed.FS 或其他 fs.FS 的目录树复制到磁盘,但不会覆盖已有文件。本文围绕空输入、fs.Sub、fs.ErrExist 和首个底层错误,整理一套能保留错误边界的复制写法。141 收藏 -
解释 Go encoding/json 中 nil 切片、空切片与 omitempty 的 JSON 输出差异,并给出稳定列表接口字段形状与回归测试写法。141 收藏 -
Go 源码位置查询需要先定位最内层作用域,再沿父链查找可见声明。通过同名变量示例说明 LookupParent、位置参数与 Info.Uses 的分工和接入边界。141 收藏 -
Go 的 sort.Slice 不保证相等元素保持原始顺序,sort.SliceStable 会保留这种相对顺序。本文从业务语义、多关键字排序和基准测试三个角度说明何时值得使用稳定排序,以及它的原地修改和比较函数边界。141 收藏 -
Go 接口只有动态类型和动态值同时为空时才等于 nil。把值为 nil 的具体指针返回给 error,会让接口携带该指针类型,从而出现 err != nil。本文用最小示例说明原因、观察方法和正确修复方式。140 收藏 -
本文说明 Go 自定义 http.CookieJar 必须满足的两个方法、并发安全要求、内存实现边界以及接入 http.Client 的方式,帮助读者区分测试替身和生产级 Cookie 策略。140 收藏 -
Go Gonum 的 BFGS 需要目标函数梯度,NelderMead 则只依赖函数值。本文用同一个目标函数对比两种方法的 Problem 写法、API 边界、函数求值成本和选型条件,帮助你避免因 Grad 缺失或梯度不可靠而选错方法。140 收藏 -
Go 的 slices.Compact 只合并连续相等元素,不会自动过滤空字符串或零值。本文用 nil、空切片、业务校验和 CompactFunc 说明异常分支及尾部清零的处理方式。140 收藏 -
Go 信号处理偶发丢失,通常要从 NotifyContext 的注册时机、context.Done 的观察位置和 stop 的清理时机分层排查。本文给出一套统一退出入口,说明第一轮信号、收尾阶段和 stop 恢复默认行为之间的边界。139 收藏 -
syscall.Exec 不是启动一个子进程,而是把当前进程映像替换成目标程序。本文从 argv、环境数组和成功不返回三个边界出发,给出 Unix 下的最小写法与兼容建议。139 收藏 -
Go sync.Pool 中对象放入后很快消失并不一定是并发错误,本文解释临时复用池的生命周期边界,并比较 Pool、带锁 map 与有界 channel 的适用场景。139 收藏