Go问答技术文章
-
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 收藏 -
Golang · Go问答 | 5天前 | go · 浮点数 · strconv · 字符串格式化 · FormatFloat · strconv.FormatFloat Go科学计数法 Go浮点格式化
Go 中想让 float64 输出普通十进制字符串,关键是使用 strconv.FormatFloat 的 fmt='f';prec=-1 保留能精确还原的最短数字,固定小数位则传入具体精度。本文拆开说明 fmt、prec 和 bitSize 的组合边界。315 收藏 -
Go 的 strconv.Atoi 不会自动忽略首尾空白。本文说明为什么会解析失败,并给出裁剪后解析、严格拒绝和错误分类的实用写法。408 收藏 -
Go 中 rune 是 Unicode 码点数值。想得到字符应使用 string(r),想得到十进制数字文本则使用 strconv.Itoa 或明确的格式化动词。395 收藏 -
Go range 遍历字符串时,索引返回的是 UTF-8 rune 在原字符串中的字节起始位置,而不是连续的字符序号。本文用代码区分 byte offset、rune 序号、[]rune 和非法 UTF-8 的处理边界。451 收藏 -
Go 的 string 下标访问的是 UTF-8 字节而不是字符。本文用 Go你 示例说明 len、s[i]、range、[]rune 和 unicode/utf8 的边界,避免中文截断和错误计数。474 收藏 -
解释 Go copy 复制切片时返回数量变少的原因,围绕目标切片长度、容量、make 初始化和 append 选择给出排查与修复方法。439 收藏 -
解释 Go nil slice 与空但非 nil 的 slice 为什么在传统 encoding/json 中分别输出 null 和 [],并说明 omitempty、响应 DTO 归一化以及 encoding/json/v2 迁移时的边界。364 收藏 -
Go 切片 append 后另一个切片内容跟着变化,通常是因为容量足够时仍共享底层数组。本文用 len、cap 和最小示例区分共享与扩容分支,并给出 copy 与 slices.Clone 的隔离写法。489 收藏 -
Go 的 map 遍历顺序没有语言规范保证,不能直接把 range 结果写进固定断言。本文用独立 key 切片排序的方法生成稳定输出,并说明 nil map、遍历期间修改和生产代码边界。167 收藏 -
Go 的 map 读取不存在的键时不会报错,而是返回元素类型的零值。本文用具体代码解释单值读取、comma-ok、nil map 与写入 panic 的边界。482 收藏