Go问答技术文章
-
Go 的 os.File.Close 会返回 error。本文按文件用途和错误阶段说明什么时候必须返回、什么时候可记录,并给出同时处理 Write、Flush、Close 的写法。172 收藏 -
Go 的 os.ReadFile 面向普通文件,传入目录时出现错误通常是路径类型不匹配。本文解释 *os.PathError 的含义,并给出目录读取与错误判断的正确写法。254 收藏 -
Go 用 os.Stat 判断文件是否存在时,不能把所有非 nil 错误都当成不存在。本文区分缺失、权限不足和其他系统错误,并给出 errors.Is 的安全写法。471 收藏 -
Go 的 csv.Reader 把 FieldsPerRecord 设为负数后,不再检查每条记录的字段数量,适合列数可变的 CSV;本文同时说明它与正数、0 的区别,以及如何在业务层安全处理变长记录。342 收藏 -
Go 的 json.Decoder.Decode 成功一次不代表整个输入已经结束。本文用第二次 Decode 检查 io.EOF,区分额外 JSON 值与损坏尾部,并给出日志、灰度和回滚做法。212 收藏 -
Go 的 encoding/json 中,omitempty 不能按结构体零值隐藏普通 struct;本文解释原因,并给出指针与 omitzero 的选择方法。277 收藏 -
Go 的 json.Unmarshal 复用结构体时,JSON 缺失字段不会自动清零,旧指针可能因此残留。本文用最小示例区分缺失、null 与对象合并,并给出安全处理方式。404 收藏 -
Golang · Go问答 | 5天前 | HTTP · go · ResponseWriter · ServeHTTP · Go header WriteHeader ResponseWriter ServeHTTP
Go 的 ResponseWriter 会在首个 Write 或 WriteHeader 时提交响应头,之后再修改 Header 或状态码通常不会生效。本文用 ServeHTTP 示例说明正确顺序、错误分支和特殊边界。107 收藏 -
Go 的 http.Server.Shutdown 返回错误时,不能只看 err != nil。本文区分 Shutdown、Serve 与 context 的错误语义,用 errors.Is 判断超时,并给出活动请求、长连接和强制退出的处理清单。372 收藏 -
Go 的 Response.Body 只 Close 不读到 EOF 时,HTTP/1.x 连接可能无法复用。本文按响应大小给出读取、关闭和排查 Transport 的实用写法。301 收藏 -
Go 的 CheckRedirect 返回普通错误时,上一跳 Response 可能仍然返回,但 Body 已被关闭。本文解释如何使用 ErrUseLastResponse 保留响应并安全读取正文。331 收藏 -
Golang · Go问答 | 5天前 | go · HTTP客户端 · http.NewRequest · ContentLength · Go http.NewRequest ContentLength nil Body http.NoBody
Go http.NewRequest 传入 nil Body 后 ContentLength 为零是正常语义:nil 表示没有请求体,零值不能单独证明 Body 一定为空。本文对比 nil、http.NoBody、已知长度 Reader 和未知 Reader 的边界。238 收藏 -
Go time.ParseDuration 解析小时分钟混合值失败,通常不是小时和分钟不能组合,而是输入使用了 min、中文单位或内部空格。本文说明合法格式、错误边界与外部输入处理方式。459 收藏 -
Go time.Time 经过 JSON 序列化后,变化的通常是 Location 名称或夏令时规则,而不是时间瞬时点。本文拆解 RFC3339、偏移量和位置恢复的边界。366 收藏 -
Go 的 time.Time 比较不能只看打印出来的日期。Equal 比较时间瞬间,== 还会比较 Location 和 monotonic clock 读数。本文用跨时区、time.Now、序列化和 map 键几个场景说明迁移边界。108 收藏