Go教程技术文章
-
用 sync.Mutex 把共享状态的读取、条件判断和写回绑定在同一个临界区,避免并发复合更新中的竞争窗口、丢失更新和状态泄漏。145 收藏 -
用 Go sync.OnceFunc 把文件或连接的清理动作封装成共享闭包,让 defer、超时和错误分支可以重复调用但只真正执行一次,并说明与 sync.Once 和可重试清理的边界。116 收藏 -
围绕 Go context.WithCancel 的生命周期,说明为什么创建后应立即 defer cancel,以及长任务如何让 worker 监听 Done 并正确收尾。374 收藏 -
Go WithoutCancel 可以保留父 Context 的关联值,同时移除父级截止时间和取消传播。通过完整示例说明独立 WithTimeout、cancel 的释放责任,以及 Done 为 nil、值不是快照和后台任务可靠性的限制。173 收藏 -
Go context.WithCancelCause 可以把业务取消原因传给下游。本文区分 ctx.Err() 与 context.Cause(ctx),示范哨兵错误、自定义错误类型、errors.Is 判断以及父子 Context 的首个取消原因规则。449 收藏 -
Go time.Timer 的重置写法取决于通道语义:Go 1.23 及以后可直接 Reset,旧版则应先 Stop,并在返回 false 时用非阻塞接收排空潜在旧值。本文还说明 go.mod、GODEBUG、单一拥有者和 AfterFunc 的边界。407 收藏 -
Go 按指定时区查询某一天,需要用 time.Date 构造当天与次日的日期边界。本文结合日期筛选输入、完整 Go 示例和左闭右开判断,说明时区显示、夏令时、无效日期与重复午夜的适用限制。105 收藏 -
Go net/url.URL 的 Opaque 用于表示 scheme:opaque 形式的不透明数据。本文从字段关系、String 序列化和 RequestURI 输出说明它与 Host、Path 的边界。280 收藏 -
Go 的 time.Time 既能表示墙上时钟,也可能携带进程内单调时钟。本文用一组最小写法说明 Before、After、Equal、Compare、Sub 的分工,以及序列化、时区转换、== 比较和机器休眠时的边界。340 收藏 -
Go 的 url.URL 中,Host 保留主机与可选端口,Hostname() 返回不带端口的主机名。本文用域名、显式端口、相对路径和 IPv6 说明两者的选择边界。156 收藏 -
Golang · Go教程 | 3天前 | Go教程 · net/http · Go net/http HTTP连接 ResponseWriter http.ResponseController Hijack
Go 处理器需要接管底层连接时,可以用 http.ResponseController.Hijack 统一读取 ResponseWriter 的能力。本文说明最小调用方式、HTTP/2 与包装器边界,以及成功接管后的缓冲区和连接关闭责任。202 收藏 -
用 Go http.ResponseController 检测 Flush 能力,区分 http.ErrNotSupported、真实传输错误和代理缓冲边界,让包装后的 ResponseWriter 在不支持实时刷新时平滑降级。246 收藏 -
用 Go regexp.Regexp 的 ExpandString 配合命名捕获组和 SubmatchIndex,把正则匹配结果按模板顺序展开到可复用的 dst 缓冲区,并说明变量边界、未匹配组与字面量美元符号的处理。387 收藏 -
net/http ServeMux 没有公开的路由冲突比较函数,但 Handle 注册时会自动检查。本文用临时 ServeMux 把冲突或非法模式转成可处理的错误,并说明哪些模式可以共存、哪些判断不该依赖 panic 文本。117 收藏 -
Go slog 的 Handler 会过滤未启用的日志级别,但函数参数已经提前求值。本文用 logger.Enabled 在昂贵字段构造前短路,再比较格式化辅助函数与 LogValuer 的延迟计算边界。324 收藏