Go教程技术文章
-
Go iter.Pull 把 push-style 迭代器转换成 next 和 stop 两个函数。只要调用方可能在读完前返回,就应在取得 stop 后立即 defer stop(),让命中条件、自然结束和异常路径都能正确收尾。299 收藏 -
Go net/http.Server.MaxHeaderBytes 用来限制服务器解析请求头时读取的字节数,包含请求行但不限制请求体。本文说明零值默认值、显式配置、ReadHeaderTimeout 与 MaxBytesReader 的边界。299 收藏 -
用两个职责清晰的 Colly Collector 分离列表页和详情页回调:列表只发现链接,详情独立解析,并说明 Clone 共享资源、相对 URL、错误处理和异步等待的边界。298 收藏 -
用 Go net/http/httptrace 观察 DNSStart、DNSDone 与 GotConn 回调,区分真正进入 DNS 阶段、DNS 失败和连接复用导致的无 DNS 回调。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 hex.Dumper 的 Write 可能在输出行头、字节区或整行收尾时遇到底层 Writer 错误,而不足 16 字节的尾行要等 Close 才补齐。本文给出保留首个错误、正确处理 Close 并明确资源关闭责任的写法。297 收藏 -
连续压缩多段独立数据时,可以保留一个 flate.Writer,用 Reset 切换输出目标并复用内部状态;Flush 只用于流未结束时刷出当前数据,Close 才完成最终收尾。297 收藏 -
bytes.Lines 返回一个按行迭代的 iter.Seq[[]byte],通常保留每行末尾的换行符,未以换行结束的末行也会被返回。本文说明它的边界,并对比 bytes.Split 与 bufio.Scanner 的适用场景。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 收藏 -
Go 处理国际化文本时,unicode.IsNumber 可以按 rune 判断 Unicode Number 类字符。本文说明它与 unicode.IsDigit、ASCII 字节判断的区别,以及如何在遍历、索引和过滤场景中选择正确方法。297 收藏