Go语言技术文章
-
Go regexp.Compile 返回可处理的错误,MustCompile 失败会 panic。本文按源码常量、运行时输入和热更新配置拆开选择边界,并给出保留旧规则的处理方式。298 收藏 -
解释 Go map 在 range 期间删除和写入的真实边界:单 goroutine 可原地过滤,新增键是否继续遍历不确定,并发读写必须同步。298 收藏 -
Go RWMutex 在写者等待时会阻塞后续读者,长读临界区可能放大延迟。本文以配置查询示例说明锁内复制、锁外处理,并解释递归读锁、升级锁和共享引用的限制。298 收藏 -
本文说明如何用 Go httptrace.TLSHandshakeDone 记录 TLS 握手成功或失败,区分连接复用、握手状态与 HTTP 请求结果,并处理回调并发和敏感日志边界。298 收藏 -
Golang · Go教程 | 1星期前 | 标准库 · https · TLS · Go教程 · tls Go 证书 crypto/x509 Certificate VerifyHostname 主机名校验
Go 的 Certificate.VerifyHostname 专门判断证书是否匹配给定主机名:DNS 名称看 DNSNames,IP 看 IPAddresses,通配符只能作为完整左侧标签,旧 Common Name 不再参与判断。本文说明它和证书链验证的边界,并给出可复用的错误处理写法。298 收藏 -
Go 的 time.Duration 底层是纳秒数,但配置通常需要 500ms、2s 这样的可读文本。本文区分 String 与 ParseDuration 的职责,并用一个轻量 DurationText 适配文本配置、错误处理和 JSON 字符串字段。298 收藏 -
Go io.ReadAll 会持续读取到 EOF 并返回完整字节切片,面对请求体或文件输入时不能把内存上限交给输入方。本文用 io.LimitReader、io.Copy 和分块读取给出可控方案,并说明触及上限后的错误处理。298 收藏 -
讲清 Go debug/dwarf.LineReader.Files 的当前位置语义、文件索引 0、动态文件表,以及 AttrDeclFile 与 LineEntry.File 的安全解析方法。298 收藏 -
连续压缩多段独立数据时,可以保留一个 flate.Writer,用 Reset 切换输出目标并复用内部状态;Flush 只用于流未结束时刷出当前数据,Close 才完成最终收尾。297 收藏 -
bytes.Lines 返回一个按行迭代的 iter.Seq[[]byte],通常保留每行末尾的换行符,未以换行结束的末行也会被返回。本文说明它的边界,并对比 bytes.Split 与 bufio.Scanner 的适用场景。297 收藏 -
Go 中接收方直接关闭数据 channel,会让仍在发送的 goroutine 遇到 send on closed channel panic。本文从关闭语义、channel 所有权、done 停止信号和多生产者协调四步,给出可落地的退出协议。297 收藏 -
Go reflect.Value.CanSet 为 false 时,先区分反射值是否可寻址,再检查字段是否来自未导出成员。本文用值副本与指针 Elem 对比,说明怎样安全修改导出字段,以及为什么未导出字段不应绕过封装。297 收藏 -
Go filepath.Abs 以当前工作目录为基准转换相对路径。本文用配置读取示例说明错误处理、固定基准目录,以及文件存在性、符号链接和跨平台路径的职责边界。297 收藏 -
Go Testify 用 mock.Call.Run 接收 Arguments,在回调中取出并修改指针参数;本文区分 Run 与 Return,说明类型匹配、nil 防护和值参数边界。297 收藏 -
Go Gonum distuv 把分位点查询统一成 Quantile(p)。本文比较 Normal、Uniform 和 Exponential 的适用场景,给出 P50、P95 与尾部阈值的代码写法,并说明 p 范围、分布参数和极端值处理。297 收藏