Go问答技术文章
-
Go ast.Inspect 返回 false 只跳过当前子树。本文用原创函数声明筛选示例,解释 found 标记、nil 退出通知,以及用 ast.Preorder 和 break 结束迭代的区别。436 收藏 -
Go regexp.Compile 遇到重复命名分组时,先确认同名捕获组本身可以被接受,再用 syntax.Error 的 Code 和 Expr 定位真正的语法错误,并结合 SubexpNames 与 SubexpIndex 读取同名组索引。294 收藏 -
Go text/template 读取多层 map 时,可以用内置 index 函数把多个键按层传入;本文说明点号取键与 index 的区别、动态键写法,以及 missingkey=error 如何让缺失字段及时返回 Execute 错误。116 收藏 -
Go 的 url.URL 会同时保留解码后的 Path 与可选的 RawPath 编码提示。本文用具体 URL 说明两者为什么不同,并用 EscapedPath 判断最终输出。391 收藏 -
Golang · Go问答 | 1星期前 | 标准库 · TCP · Go问答 · Go keepalive net.TCPConn KeepAliveConfig SetKeepAlive SetKeepAlivePeriod TCP排障
排查 Go net.TCPConn 的 KeepAlive 参数未生效时,先区分开关、空闲时间、探测间隔与应用层超时,再核对 TCPConn 类型、API 返回错误、Dialer 或 ListenConfig 的配置来源和操作系统边界,并给出旧版本与 Go 1.23+ 的正确写法。406 收藏 -
通过 Go html/template 小程序区分正常转义、预编码导致的重复转义和 URL 上下文过滤,说明输出源码与页面显示差异,以及 template.HTML 的可信内容边界。207 收藏 -
Go bytes.Buffer 判断读取位置是否到末尾,核心看未读长度 Len() 是否为 0;循环读取时还要结合 n 和 io.EOF,区分空切片、容量和真正的读取结束。353 收藏 -
crypto/rand.Text 提供密码学安全的 RFC 4648 Base32 随机文本,但文档不承诺永远固定长度。本文解释当前 26 字符实现与至少 128 位随机性的关系,并用 crypto/rand.Read 给出严格固定长度的安全生成函数。486 收藏 -
Go encoding/csv 解析失败时,errors.As 可以取出 ParseError 的 StartLine、Line、Column 和底层 Err。本文用多行字段示例说明行列含义,并区分引号错误、字段数错误与业务定位。203 收藏 -
Go csv.Reader 的 LazyQuotes 会放宽普通字段中的裸引号和带引号字段中的非双写引号,但不会自动修复字段数、分隔符或业务数据质量。本文按兼容入口、严格边界和回滚路径说明如何安全使用。466 收藏 -
使用 Go crypto/x509 校验证书链时,VerifyOptions.KeyUsages 为空默认按服务器用途处理;为了让配置意图更清楚,可以显式设置 ExtKeyUsageServerAuth,并配合 Roots、Intermediates 和 DNSName 分层排查失败原因。163 收藏 -
Go csv.Reader 的 FieldsPerRecord 为零时会由首条记录确定后续列数。本文比较零值、正数和负数,解释表头、空字段与 ErrFieldCount,并给出读取策略迁移示例。145 收藏 -
解释 Go tls.Config.Clone 的浅克隆边界:顶层字段重新赋值不会回写原配置,但切片、映射和会话票据相关状态可能共享,并给出安全派生配置的写法。455 收藏 -
Go net.SplitHostPort 解析带端口的 IPv6 地址时,方括号用于标出主机边界。本文解释 too many colons、missing port、zone 和 JoinHostPort 的关系,帮助你正确生成与拆分 host:port。157 收藏 -
Go regexp.FindAllStringIndex 返回非重叠区间是设计行为,不是漏查。本文用 aba/ababa 说明左到右的匹配推进、n 参数的真实作用和 UTF-8 字节下标,并给出按 rune 起点推进的外部游标方案来收集重叠结果。341 收藏