Go语言技术文章
-
用 Go strings.LastIndexByte 定位最后一个 ASCII 路径分隔符,拆出父路径和末段,处理未找到、根路径、末尾分隔符、UTF-8 字节偏移和多种分隔符的 API 选择。347 收藏 -
用 bufio.Reader 按换行分块读取大文件,解释 ReadString、ReadBytes、ReadLine 的边界,处理跨缓冲区换行、末尾无换行和超长行。104 收藏 -
用 fs.ValidPath 校验虚拟路径,再通过 path.Join 把调用方名称映射到带前缀的底层 FS,并说明 fs.Sub、错误路径和安全边界的取舍。269 收藏 -
Go embed 只能从编译时声明的路径读取资源。本文用 embed.FS 配合 fs.Sub 组织多级静态目录,并说明路径前缀、目录遍历和 HTTP 暴露时的常见误区。302 收藏 -
用 Go 的 filepath.WalkDir 递归遍历目录时,如何只收集指定后缀的文件?本文比较 WalkDir、ReadDir 和 Glob 的边界,并给出大小写统一、目录继续遍历和错误处理的实用写法。255 收藏 -
用 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 收藏