Go语言技术文章
-
通过 encoding/json 的结构体、指针和 map 示例,拆开 JSON null 与字段缺失的输入差异,说明如何保留、清空和判断字段状态。424 收藏 -
Go url.URL.JoinPath 用于按 URL 语义组合路径段,会处理多余斜杠和点段,但不负责查询参数、文件路径或权限校验。本文结合代码说明 Path、RawPath、EscapedPath 与 RawQuery 的边界,帮助你安全地拼接 HTTP URL。468 收藏 -
Go json.Compact 会删除 JSON 结构中的无意义空白,但保留字符串内容,并把结果追加到 bytes.Buffer。本文说明最小调用、错误处理、已有前缀和它与 gzip、Indent、Marshal 的边界。484 收藏 -
bufio.Reader.Peek 能查看固定长度前缀而不推进缓冲读取位置,但可能预读底层输入。通过四字节标识示例说明同一 Reader 的后续读取、短输入、ErrBufferFull 及返回切片的有效期。168 收藏 -
fmt.Fscan 面向空白分隔的字段扫描,会跳过前导空白并把换行当作空格。本文说明它为什么不适合保留整行空格,并给出按字段或按行读取的选择方法。362 收藏 -
Go 的 mime.WordDecoder.Decode 专门解码一个 RFC 2047 encoded-word。本文用最小示例说明 UTF-8、CharsetReader、错误处理,以及它与 DecodeHeader 的输入边界。322 收藏 -
Go 的 multipart.Part.FileName 从 Content-Disposition 的 filename 参数读取文件名,并在返回前通过 filepath.Base 去掉目录信息。本文用逐部件解析示例说明读取方式、解析失败边界和上传落盘时的安全命名策略。434 收藏 -
Go 子切片不会复制底层数组,小窗口长期存活也可能保留大缓冲区。通过缓存示例说明 make 加 copy 的修复位置,区分 Clip、容量限制、浅拷贝以及 GC 与进程内存的观察边界。201 收藏 -
Go 的 map 遍历顺序由语言规范明确为未指定,不能把某次输出顺序当成稳定结果。本文解释 range 的真实保证,并给出排序键后生成确定性输出的写法。153 收藏 -
Go http.Cookie 的 RawExpires 只保存读取到的原始 Expires 文本,Expires 才是可用于时间判断和重新序列化的 time.Time。本文说明两者的关系、解析失败边界以及如何在代理和审计代码中正确使用。470 收藏 -
textproto.Reader.ReadMIMEHeader 会读取以空行结束的 MIME 头,并把以空格或制表符开头的续行并入上一字段。同名字段按出现顺序保留;缺少冒号、首行缩进或非法头字节时返回协议错误。本文给出读取、排错和资源边界的实用写法。241 收藏 -
Go database/sql 驱动只有在连接已确认失效且操作不可能重复执行时才应返回 driver.ErrBadConn。本文解释 database/sql 的重试边界、驱动实现位置,以及业务代码为什么要保留结果不确定时的原始错误。329 收藏 -
bytes.Reader.Size 返回底层字节切片的原始长度,普通 Read 推进后它不会变化;真正表示当前未读数据的是 Len。本文用分段读取示例说明两个指标的区别,并给出进度计算、Reset 与 ReadAt 的边界。190 收藏 -
Go math/big.Int.BitLen 返回绝对值的位长度,最少无符号字节数可按 (BitLen()+7)/8 估算。本文区分零值、负数、Bytes 变长编码与 FillBytes 固定宽度编码。425 收藏 -
bytes.NewBuffer 会把传入的 []byte 作为初始缓冲区内容使用,不会替调用方自动复制。本文说明原切片修改为何会影响后续读取,以及如何用 bytes.Clone 或显式复制隔离数据。472 收藏