Go教程技术文章
-
Go http.Server 的优雅关闭超时不是 Server 的固定字段,而是传给 Shutdown 的 context 截止时间。本文用信号、5 秒预算和错误处理示例说明配置方式,以及 WebSocket 等劫持连接的边界。433 收藏 -
Go 1.20+ 的 bytes.CutPrefix 可以同时校验并移除二进制帧起始标记。本文给出版本、标志、长度和负载的完整解码写法,比较 HasPrefix、TrimPrefix,并说明多标记分派、空前缀与切片别名边界。433 收藏 -
Go regexp 默认采用左侧优先匹配,调用 Longest 后会改为同一起点取更长结果。本文用最小示例比较两种策略,并说明 CompilePOSIX、子匹配和并发配置的边界。432 收藏 -
Go 1.23 的 slices.Collect 可以把 iter.Seq 迭代器结果收集成新的切片。本文说明 slices.Values、自定义序列、nil 结果、深拷贝边界,以及已知长度时如何用预分配 append 控制容量。432 收藏 -
strings.CutPrefix 一次只判断一个前缀。本文说明多个候选存在重叠时如何按最长优先,业务规则明确时如何保留显式顺序,以及空前缀和未命中的处理方式。431 收藏 -
Go JSON接口增加字段时,先保持旧字段的名字、类型和语义不变,再用可选字段、默认值和灰度读取承接新客户端。本文结合 encoding/json、严格未知字段校验和回滚清单,给出一套不破坏旧客户端的迁移方法。431 收藏 -
Go context.WithCancelCause 能让取消信号继续保持 context.Canceled,同时把超时、依赖失败或主动终止等具体根因沿 context 链路传递给上层。本文用最小示例说明 Err、Cause、父子取消顺序和资源清理边界。431 收藏 -
Go fmt.Errorf 的 %w 能同时保留上下文和底层错误身份,但也会把底层错误纳入接口契约。本文说明包装位置、包边界转换和日志去重策略。431 收藏 -
介绍 Go strconv.AppendInt 拼接数字字段的实用写法,说明缓冲区容量、进制、类型转换、切片返回值和并发复用边界。430 收藏 -
用 Go 的 mime.WordDecoder.DecodeHeader 解码 RFC 2047 邮件主题,区分 Decode 与 DecodeHeader,配置 CharsetReader,并排查未知字符集和地址解析边界。430 收藏 -
用一个有界并发队列讲清 Go sync.Cond 的 Wait、Signal、Broadcast 和 for 条件检查,避免消费者空取与关闭后永久等待。429 收藏 -
用 Go unsafe.Sizeof、Alignof、Offsetof 拆解结构体字段偏移、内部 padding 与尾部对齐,给出字段顺序优化方法和跨架构使用边界。429 收藏 -
讲清 Go database/sql 事务提交失败后的三类状态,给出整笔事务重试、request_id 幂等和提交未知状态查询的实现边界。429 收藏 -
Go 的 io.TeeReader 能在下游读取数据时,把同一批字节同步写入另一个 Writer。本文用内存与文件示例说明其同步语义、错误传播、尾部未读和完整保存边界。429 收藏 -
Go 泛型约束应只暴露算法真正需要的能力。本文用 LatestByID 示例说明如何将 HasID 与 HasVersion 组合成 SyncRecord,解释接口嵌入的交集语义、类型项边界、函数参数替代方案,以及过度约束和性能误区。428 收藏