Go语言技术文章
-
Go 的 StdEncoding 会保留 Base64 的 = 补位,RawStdEncoding 使用相同字母表但省略补位。本文用输入长度、编解码配对和 URL 字母表三个边界说明如何选择。228 收藏 -
围绕 Go 子测试 t.Parallel 的调度边界,区分只读夹具与可变资源,给出每个子测试独立创建、清理和用 -race 重复验证的做法。228 收藏 -
解释 Go 泛型接收者参数与方法自身类型参数的区别,说明 List[E]、Pair[First, _] 和 Map[R] 的声明位置、参数映射与 Go 1.27 的接口边界。228 收藏 -
围绕 Go net/http Cookie.Partitioned 说明 CHIPS 的设置方式、Secure 与 SameSite=None 的组合要求,以及浏览器兼容和降级核验边界。227 收藏 -
用自定义错误承载动作、资源和底层原因,再通过 errors.As 穿过包装层提取结构化上下文,避免解析字符串或丢失错误契约。227 收藏 -
Go TestMain 初始化失败不能只写 return,否则测试入口可能按 m 的默认退出状态结束。本文说明 m.Run、资源清理、flag.Parse 与 os.Exit 的正确组合。227 收藏 -
filepath.EvalSymlinks 解析后路径仍可能变化,通常与符号链接目标、当前工作目录和词法清理边界有关。本文用 Go 示例拆开这些因素,并说明路径字符串、最终目标与文件句柄应该如何分别判断。227 收藏 -
Go 的 exclude 和 retract 都能避开问题版本,但作用域完全不同:exclude 是消费方修正自己的模块图,retract 是模块作者撤回已发布版本。本文用场景、示例和验证命令说明如何选择。227 收藏 -
介绍 Go 1.24+ 的 http.Server.Protocols,给出 HTTP/1、TLS HTTP/2、明文 HTTP/2 的显式配置、验证命令与兼容边界。227 收藏 -
Golang · Go问答 | 13小时前 | Context · 并发编程 · 接口设计 · Go问答 · 生命周期 结构体 context.Context 向后兼容 Go context 取消传播
Go 官方建议不要把 Context 保存进结构体,因为请求级取消、deadline 和值的生命周期会被对象复用混在一起。本文用按调用传递、生命周期检查和 net/http 兼容性例外说明该规则的边界。227 收藏 -
Go 把切片传入函数时,底层数组可能仍被共享,但切片头会按值传递。文章用最小示例解释 append 后为什么调用方的长度不变,给出返回新切片、指针修改与预分配三种边界清楚的写法,并说明 cap 足够时容易看到的隐藏覆盖。226 收藏 -
Go 的 PATCH 接口如果直接把请求体解码到普通结构体,字段缺失和显式 null 很容易被合并。本文用指针与 json.RawMessage 设计可验证的更新参数,说明两种方案的取舍、错误处理和兼容边界。226 收藏 -
Go 1.23 引入 range-over-func 与 iter.Seq 后,切片筛选、转换和提前停止可以组成惰性流水线。本文用可运行示例说明 yield、break、slices.Collect 的关系,以及从旧循环迁移时要避开的副作用边界。226 收藏 -
Go 1.26 让 new 函数可以直接接收表达式,适合构造 JSON 可选字段和配置指针。本文从旧写法、版本门槛、兼容回退和最小验证说明哪些代码值得改、哪些不该急着改。226 收藏 -
解释 filepath.WalkDir 回调返回 fs.SkipDir 时的目录跳过和文件级遍历终止语义,并用可运行示例验证判断顺序。226 收藏