Go教程技术文章
-
用 Go 的 os.ReadDir 读取目录后,如何按目录、普通文件和其他类型筛选?本文从 DirEntry 的 IsDir、Type、Info 讲起,并说明目录级错误、单项 Info 错误和大目录分批读取的处理方式。290 收藏 -
用 atomic.Pointer 发布不可变配置快照,让并发读请求通过 Load 获取完整配置,并用 Store 或 CompareAndSwap 替换指针槽位,避免读到半更新状态。296 收藏 -
用 Go 的 debug/elf 读取 ELF 文件头,结合 FileHeader.Machine、Class 和 Data 判断目标架构,并区分元数据识别与完整运行兼容性检查。274 收藏 -
Go 的 http.Header.Get 只返回同名请求头的第一个值,完整读取应使用 Header.Values。本文结合 Add、Set、Get、Values 的差异,说明大小写规范化、直接 map 访问和返回切片复制的排查边界。295 收藏 -
Go context 没有直接合并多个取消来源的通用函数,可以用派生的 WithCancelCause 作为汇合点,再用 AfterFunc 转发第二个来源。本文说明取消原因、清理函数、旧版本降级和 goroutine 回收边界。264 收藏 -
通过私有可比较键、只含值字段的Metadata快照和返回副本的读取接口,在Go context中传递只读请求标签,并区分缺失、子值遮蔽和共享引用风险。355 收藏 -
请求结束后仍要完成异步任务时,先用 context.WithoutCancel 脱离请求取消,再用 context.WithTimeout 设置独立期限;本文同时说明值传递、取消边界和常见误区。493 收藏 -
用 Go 1.22 之后的 net/http ServeMux 方法模式注册 GET、POST 路由,说明 HEAD 特例、405 响应、匹配优先级和版本兼容边界。347 收藏 -
通过包装Go RoundTripper,在独立Header副本中注入Context追踪标识,保留底层响应与错误,并明确并发、Body和重定向目的端的处理边界。291 收藏 -
Go http.Server 的优雅关闭不是直接调用 Close,而是用 Shutdown 先停止监听、关闭空闲连接,再等待活动请求结束。本文给出带退出信号和超时上下文的最小实现,并说明 ErrServerClosed、超时以及 WebSocket 等长连接边界。483 收藏 -
Go http.Client 的 Timeout 是客户端级兜底,context.WithTimeout 适合控制单次请求。本文用完整示例说明两者边界、超时错误判断、响应体清理和参数选择。475 收藏 -
用 Go net/http/httptrace 观察 DNSStart、DNSDone 与 GotConn 回调,区分真正进入 DNS 阶段、DNS 失败和连接复用导致的无 DNS 回调。298 收藏 -
Go 的 json.RawMessage 适合处理外层结构固定、内层字段动态的 JSON。本文说明怎样先保留未知 payload,再按 kind 延迟解码,并在修改外层字段后通过二次 Marshal 保留原始 JSON 值,同时区分字段缺失、null、空对象和非法 JSON。200 收藏 -
给 Go 结构体实现 MarshalJSON 后,如果方法内部再次对原类型调用 json.Marshal,就会重新命中同一个方法并形成递归。本文用别名类型隔离方法集,再通过匿名结构体合并默认字段与自定义字段,并说明指针接收者、错误返回和字段覆盖的边界。214 收藏 -
用 Go hash/fnv 把稳定字符串映射为分片编号,讲清 FNV-1a、UTF-8 字节、32/64 位选择、取模边界与扩容迁移风险。209 收藏