Go问答技术文章
-
Go crypto/tls 的 InsecureSkipVerify 会同时跳过证书链和主机名校验。本文说明它的中间人风险,并给出 RootCAs 与 VerifyConnection 的安全替代方案。452 收藏 -
time.Duration 本质是纳秒整数,String 会按可读性自动选择小时、分钟、秒、毫秒、微秒或纳秒,并保留负值符号。本文用典型场景解释这些输出为什么不同,以及接口需要固定格式时怎么处理。339 收藏 -
Go 使用 archive/tar 解包时,权限差异常常不是 Header.Mode 丢失,而是创建权限受到 umask 影响或目录没有显式 Chmod。本文按普通文件、目录和特殊条目拆开处理,给出一套可复用的还原思路。200 收藏 -
说明 Go gzip.Writer.Close 为什么不能省略:它会完成压缩状态并写出 gzip 尾部信息。文章给出正确的 defer 关闭顺序,区分 Flush 与 Close,并整理读取不完整、底层关闭失败等排查边界。374 收藏 -
Go text/template 执行成功但页面为空,通常不是 Execute 没运行,而是写入目标、模板入口、数据字段或空值分支出了偏差。本文给出从输出长度到 ExecuteTemplate 的排查顺序。197 收藏 -
bufio.Writer 写入成功不代表数据已提交给文件。本文说明关闭前 Flush 的正确位置、写入与关闭错误的保留方法,以及 Flush 和 Sync 的区别,给出不覆盖已有文件的报表写入示例。430 收藏 -
Go regexp 匹配中文异常,通常不是 UTF-8 失效,而是把 ASCII 字符类、过窄的码位范围或字节下标当成了 Unicode 规则。本文用 \p{Han}、\w、\b 和 rune 示例拆开边界,给出可直接套用的排查方式。221 收藏 -
Go 自定义 MarshalJSON 时直接再次编码原类型会无限递归。本文说明 json.Marshaler 的触发原因,并用新的定义类型复用默认字段编码、追加自定义字段,同时保留错误处理边界。169 收藏 -
Go netip.Prefix 解析 CIDR 后为什么还保留主机位?关键在于 ParsePrefix 和 PrefixFrom 都不会替调用者自动掩码。本文说明 Prefix、Masked、Contains 的职责边界,并给出在展示、存储和地址匹配边界处统一规范化的写法。338 收藏 -
Go reflect.Value.IsNil 在无效 Value 或不支持的 Kind 上会 panic。本文给出 IsValid 与 Kind 守卫示例,区分 nil 接口、typed nil、普通零值及接口容器,避免把防异常改动变成错误的业务判空。216 收藏 -
Go 的 interface 类型可以比较,但其中保存的动态值不一定可比较。本文从 panic 现场解释 slice、map、func 等类型为何触发运行时错误,并给出 reflect.Value.Comparable、类型断言和业务键比较的安全方案。136 收藏 -
Golang · Go问答 | 40分钟前 | 标准库 · HTTP · go · Cookie · cookie Go net/http Secure SameSite CHIPS Partitioned
Go 的 http.Cookie 增加 Partitioned 后,真正容易出错的是属性组合:Partitioned 必须和 Secure 一起使用,SameSite 则负责跨站发送策略。本文用标准库字段、Valid 检查和 Set-Cookie 序列化拆开这三个边界。415 收藏 -
Go map 执行 clear 后 len 会变成 0,但底层桶、GC 时机和运行时堆复用会让进程内存暂时不降。本文用小实验区分清空、重建和真正释放。343 收藏 -
Go slice 截取不会复制底层数组,只保留很小的子切片时,大数组仍可能被引用。本文用字节片段示例说明原因,并给出 make+copy 与 bytes.Clone 的释放方案。424 收藏 -
Go 的 -race 会在运行时观察并发访问,因此内存和执行时间都会增加。本文拆解开销来源,并给出提交级、合并级和真实负载的测试分层方案。212 收藏