Go语言技术文章
-
用一个有界任务队列拆开 Go sync.Cond 的等待谓词、Signal 与 Broadcast 边界,说明锁顺序、虚假唤醒式重检和多消费者通知如何验证。453 收藏 -
multipart.Reader.NextRawPart 会按 MIME boundary 逐个返回 Part,并保留 quoted-printable 的原始传输编码。本文用一个带前导换行的 multipart body,说明如何区分边界前空白、Part.Read 和 io.EOF,避免把未读内容或编码差异误判成解析失败。453 收藏 -
Go select 一旦加入 default,就会在没有可通信 case 时立即返回;如果它被放进无条件循环,空闲路径就会变成忙轮询。本文说明如何判断、修复并保留必要的非阻塞语义。453 收藏 -
Golang · Go问答 | 2个月前 | go语言 · HTTP客户端 · Go问答 · 连接复用 · 排查清单 · net/http 连接复用 HTTP响应体 Go问答 resp.Body.Close 排查清单
本文从 Go HTTP 客户端连接数上涨的现象出发,按代码、连接池和日志三层检查响应体是否读完并关闭,给出修复写法、反向验证和上线清单。452 收藏 -
Go 的 ServeMux 已经能按方法、主机和路径匹配请求,Request.Pattern 可以把最终命中的模式带进日志。本文用一个最小路由示例比较精确路径、通配符和方法匹配,并说明空 Pattern 的边界。452 收藏 -
Go container/heap 不会自动感知元素 priority 的变化。通过维护 Item.index,并在修改后调用 heap.Fix,可以让优先队列恢复正确顺序;删除和批量变更则分别使用 heap.Remove 与 heap.Init。452 收藏 -
Golang · Go教程 | 1个月前 | 标准库 · go · html/template · 错误排查 · Web模板 · Parse 模板函数 Go html/template FuncMap 模板初始化
Go html/template 使用自定义函数时,FuncMap 必须在 Parse 或 ParseFiles 前注册,否则模板会在解析阶段报 function 未定义。本文用一个邮件通知模板的小实验,拆开注册顺序、模板错误定位、运行时参数校验和安全边界。451 收藏 -
Golang · Go问答 | 1个月前 | 中间件 · go · 认证 · 安全 · net/http · net/http 认证中间件 Go问答 BasicAuth WWW-Authenticate
Go 的 BasicAuth 适合内部管理端、健康检查或临时保护,但 Request.BasicAuth 只负责解析,不替你决定空密码、认证失败状态码和日志内容。本文从一个标准库中间件出发,补齐 401、WWW-Authenticate、凭据校验、权限边界和测试核对。451 收藏 -
Go 向已关闭 channel 发送会触发运行时 panic。关键不是发送前猜测 channel 状态,而是把关闭权交给能确认所有发送方已退出的唯一协调者;接收方提前结束时用 done channel 或 context 通知发送方停止。451 收藏 -
Go range 遍历字符串时,索引返回的是 UTF-8 rune 在原字符串中的字节起始位置,而不是连续的字符序号。本文用代码区分 byte offset、rune 序号、[]rune 和非法 UTF-8 的处理边界。451 收藏 -
Go regexp.Split 的 n 参数不是分隔符数量,而是返回子串数量上限。n<0 返回全部结果,n=0 返回 nil,n>0 最多返回 n 个子串并保留最后的未切分文本。451 收藏 -
Golang · Go问答 | 1天前 | channel · 定时器 · select · time.After · Go问答 · Go timeafter怎么处理 Go time.After定时器 Go time.After循环 Go定时器读取 Go NewTimer与NewTicker
解释 Go time.After 返回值、循环等待与 time.Time 转换,比较 NewTimer 和 NewTicker 的使用边界,帮助排查定时器读取问题。451 收藏 -
用 Go 的 context.WithCancelCause 连接并发任务,让上游知道是超时、校验失败还是依赖服务异常,并用 Cause 做可验证的错误分类。450 收藏 -
Go 的 maphash.Bytes 适合把字节序列映射为进程内的 uint64 分桶值,但它不是加密摘要,也不能替代原文相等判断。本文用短键索引场景说明 MakeSeed、相同 Seed、不同数据结构实例和碰撞复核之间的边界。450 收藏 -
Go 泛型调用省略类型参数时,编译器要从实参、函数签名和约束中建立类型关系。本文用可编译示例说明推断成功与失败的边界,以及何时补写显式类型参数。450 收藏