Go教程技术文章
-
通过一个可运行的 Go 示例,拆解 sort.Find 的比较函数方向、最小插入点和 found 返回值,避免把它误用成返回 -1 的查找函数。440 收藏 -
go/types.Info.FileVersions 可以告诉静态分析工具每个 ast.File 使用的 Go 语言版本。本文用一组可运行的类型检查代码说明文件版本、Config.GoVersion、Package.GoVersion 的关系,并处理版本缺失、类型错误和未来版本等边界。440 收藏 -
Go 的 trace.Stop 太晚会让无关运行阶段混入追踪,也可能因 defer 顺序错误在文件关闭后仍尝试写入。本文用采集窗口和资源生命周期解释正确写法。440 收藏 -
编辑器保存配置时常用临时文件写入再重命名,Go 文件监听器看到的可能是多次事件而不是一次保存。本文用事件合并、稳定快照读取和重试窗口处理原子替换,避免读到半个文件,也避免漏掉真正的更新。439 收藏 -
Golang · Go教程 | 2星期前 | JSON · go · 后端开发 · 接口设计 · Go encoding/json JSON接口 DisallowUnknownFields Decoder
Go 的 JSON 接口要不要拒绝未知字段,关键不在于开关本身,而在于客户端兼容边界。本文用 Decoder.DisallowUnknownFields 拆解严格校验、错误定位、灰度发布和回滚策略。439 收藏 -
io.NewSectionReader 适合从一个可随机读取的数据源中切出固定区间。本文用 bytes.Reader 演示 Offset、Read、ReadAt、Seek 与越界 EOF 的实际边界,避免把局部读取误写成全量读取。439 收藏 -
Golang · Go教程 | 1个月前 | 容器 · go · 性能 · kubernetes · 运行时 · Kubernetes GOMAXPROCS cgroup Go 1.25 容器 CPU 限额
Go 1.25 开始,Linux 容器中的默认 GOMAXPROCS 会参考 cgroup CPU 限额,并在限额变化时自动更新。本文用最小示例说明旧代码的风险、GODEBUG 兼容开关、runtime.SetDefaultGOMAXPROCS 和上线前检查。438 收藏 -
用 Go debug/buildinfo.ReadFile 读取已构建二进制中的主模块、依赖版本与版本控制信息,配合发布校验避免拿错构建产物。438 收藏 -
Go 可以用文件名后缀和 //go:build 条件编译为 Windows、Linux 提供不同实现。本文用一个跨平台文件权限接口说明目录组织、构建标签、文件选择检查和常见坑。438 收藏 -
Golang · Go教程 | 1个月前 | WEB开发 · 标准库 · HTTP · go · 路由迁移 Go ServeMux HTTP路由冲突 method pattern host pattern
把旧版 Go HTTP 路由迁移到支持方法和主机模式的 ServeMux 时,最容易误判的是注册顺序。本文用冲突示例解释方法、路径、主机三种匹配关系,给出启动期检查、兼容写法和 httptest 回归边界,避免服务上线后才发现请求落到了错误处理器。437 收藏 -
Go 1.24 引入 os.Root 后,处理用户可控文件名不必再手写一套容易漏掉符号链接和 .. 的路径校验。本文用一个安全文件读取小实验,验证 OpenRoot、Root.Open、OpenInRoot 的边界,并说明旧版本的兼容做法。437 收藏 -
Go 数据库请求超时后仍占连接,通常不是把 timeout 调大就能解决。应从 HTTP 请求 Context 派生查询 Context,调用 QueryContext,关闭 Rows,并结合 DBStats 与数据库日志确认取消信号真的到达驱动和数据库。437 收藏 -
Go 正则解析日志时,不要把 FindStringSubmatch 的数字下标散落在结构体初始化里。使用命名捕获组配合 SubexpIndex 建立字段映射,匹配失败返回错误,可选字段缺失保留零值,正则调整后更容易维护。436 收藏 -
Go 1.26 新增 crypto/hpke,提供符合 RFC 9180 的混合公钥加密接口。本文用一个最小消息交换示例拆开封装、解封装、上下文信息和密钥用途边界,并说明如何验证密文不可直接当作明文使用。435 收藏 -
用 Go 处理连续 JSON 流时,Decoder.Token、Decode 和 Buffered 的边界很容易被误读。本文从两个 JSON 连在一起的现场出发,验证读取位置、解释看似吞值的原因,并给出可复查的多对象解析写法。435 收藏