Go问答技术文章
-
Go Reader 读到最后一行没有换行时,先区分输入没有终止符、Scanner 去掉换行和 EOF 处理顺序,再选择保留原文或在展示层显式补换行。264 收藏 -
Go OpenFile 追加写仍覆盖文件,通常不是 Write 本身失效,而是 flags 中混入 O_TRUNC、实际使用了 os.Create,或每次循环重新打开文件。本文按现象排查 flags、打开生命周期、Seek 与 WriteAt,给出可直接改造的追加写法。200 收藏 -
Go io.Copy 返回的写入长度与源文件大小不一致时,问题通常出在 Reader 范围、读取游标、目标文件尾部或字节与字符的单位差异。本文给出一套可执行的排查顺序,并说明已知长度时如何使用 io.CopyN。393 收藏 -
Go 查询参数中的裸加号会按空格处理,字面加号应编码为 %2B。本文区分查询与路径规则,给出 Values 编码示例,并解释重复解码、格式错误和签名地址的处理边界。460 收藏 -
Go 的 Request.WriteProxy 面向 HTTP 代理写出请求,会在请求行使用包含 scheme 和 host 的绝对 URI;本文区分 Write、WriteProxy、URL 与 RequestURI,给出代理调试时的排查思路。449 收藏 -
Go ServeMux 匹配不到路径时,按 Go 版本、路径段、尾斜杠、通配符、HTTP 方法和 Host 逐项排查,掌握 {id}、{path...} 与 {$} 的实际边界。480 收藏 -
Go TLS 出现 unknown authority 时,按服务端证书链、系统根证书池、私有 CA、自定义 RootCAs 和容器证书包逐项排查,避免用 InsecureSkipVerify 绕过校验。103 收藏 -
Go 的 Server.Shutdown 会等待活动连接回到空闲状态;如果请求、上游调用或长连接没有按预期结束,就会在上下文到期时返回超时。本文按负载、时间预算和连接类型拆解排查与修复方法。459 收藏 -
Golang · Go问答 | 2天前 | 连接池 · 性能排查 · HTTP客户端 · Go问答 · Go 连接复用 MaxIdleConns http.Transport MaxIdleConnsPerHost MaxConnsPerHost
Go http.Transport 的 MaxIdleConnsPerHost 控制每个主机保留的空闲 keep-alive 连接数,不等于并发总数或所有主机总量。本文区分相关字段,并给出长期复用 Transport 的配置方式和连接复用排查路径。230 收藏 -
Go 客户端响应体读不到,通常不是一个原因:可能请求本身失败、Body 已经被消费、响应按协议没有内容,或读取过程中发生了错误。本文用 net/http 的真实返回关系拆开排查,并给出文本与 JSON 都能复用的读取写法。117 收藏 -
Go AddDate会对不存在的目标日期进行归一化,而非自动截到月末。本文比较日历偏移、月末截断与固定时长,给出CivilDate实现,并说明账期锚点、闰年和时区边界。348 收藏 -
从时区形态、layout 占位符、Parse 与 ParseInLocation 的区别入手,定位 Go 时间字符串解析失败,并给出稳定的选择规则。208 收藏 -
Go encoding/json 默认会忽略结构体中没有对应字段的 JSON key。本文说明 Decoder 的未知字段边界、结构体匹配规则,以及如何用 DisallowUnknownFields 显式启用严格解析。394 收藏 -
Go 的 JSON 数字进入 interface{} 后默认会解码为 float64。本文解释原因,并用结构体、Decoder.UseNumber 和 json.Number 给出固定字段与动态字段的处理方案。150 收藏 -
讲清 Go strconv.ParseInt 的 bitSize、ErrRange、ErrSyntax 与 NumError 返回边界,示范如何用 errors.Is、errors.As 和 %w 保留可判断的错误信息。324 收藏