Go问答技术文章
-
Go 的 fs.Sub 负责把已有文件系统映射成一个子树视图,但不会主动确认目录已经存在。本文解释错误为何延后到 Open、ReadFile 或 ReadDir 等访问动作,并给出显式检查与封装方式。367 收藏 -
Go 服务端可以直接调用 r.Referer() 读取请求头中的 Referer;缺失时返回空字符串。本文说明它与 Header.Get 的关系、测试写法、代理和隐私策略造成的缺失边界,以及为什么不能把 Referer 当成认证或安全授权依据。314 收藏 -
os.Stat 跟踪符号链接后描述目标对象,Lstat 描述链接本身,Readlink 返回保存的目标路径。通过正常与悬空链接的对照示例,解释类型位、相对目标路径、错误分类和路径变化的处理边界。500 收藏 -
Go 的 crypto/rand.Read 与普通 io.Reader 不同,它会通过 io.ReadFull 填满整个目标切片。本文解释短读取契约的差异、正确生成随机字节的写法,以及自定义 Reader 时应该如何处理 n 和 error。148 收藏 -
Go 的 float64 可以作为 map key,但 NaN 不等于自身,所以写入后的 NaN 不能按原值稳定查回。本文解释插入、查找、删除的边界,并给出规范化键的写法。465 收藏 -
Go csv.Reader 遇到列数不一致时,把 FieldsPerRecord 设为 -1 即可保留每条解析后的 []string;文章同时说明严格模式、ErrFieldCount、ParseError 和 ReuseRecord 的处理边界。245 收藏 -
用 Go netip.AddrFrom16 从 16 字节数组构造 IPv6 地址,说明字节布局、IPv4 映射 IPv6 的语义,以及 AddrFromSlice 的长度边界。232 收藏 -
通过 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 收藏