Go语言技术文章
-
讲清 Go 自定义 net.Resolver.Dial 的调用边界,使用同一个 net.Dialer 转发上下文、网络类型和 DNS 地址,并接入 HTTP Transport 保留请求超时与本地网络配置。122 收藏 -
Go mod edit -replace 默认会改写 go.mod。本文用 go.work 和独立 modfile 两种方式隔离本地依赖替换,并给出提交与 CI 检查方法。122 收藏 -
说明 Go archive/zip 如何自动生成 ZIP64 元数据,使用 io.Copy 流式写入大条目,并正确读取 64 位大小字段与处理关闭错误。122 收藏 -
Golang · Go教程 | 9小时前 | Go教程 · database/sql · Go database/sql 动态查询 sql.Rows.ColumnTypes ColumnType DatabaseTypeName ScanType
Go 的 sql.Rows.ColumnTypes 可读取查询结果列的名称、数据库类型、扫描类型、长度、精度和可空性。本文给出完整示例,并比较 Columns、目录查询与动态值扫描的适用边界。122 收藏 -
Go 计算大文件 SHA256 时,不必把整个文件读入内存。本文用 sha256.New 配合 io.Copy 流式写入哈希状态,再说明错误边界、CopyBuffer、摘要格式和文件完整性校验的常见坑。121 收藏 -
Go crypto/subtle 的 ConstantTimeSelect 用 0/1 条件在两个整数之间选择结果。本文说明 v 的合法范围、如何生成选择值、参数求值边界和测试方法。121 收藏 -
讲解 Go bufio.Scanner 如何编写保留分隔符的 SplitFunc,覆盖 advance、token、atEOF、跨缓冲区匹配和尾部残片处理。121 收藏 -
Golang · Go问答 | 2个月前 | goroutine · HTTP · Context · 超时控制 · Go问答 · WithTimeout Go问答 context取消 QueryContext HTTP请求取消 goroutine退出
Go HTTP 请求断开后,r.Context() 会收到取消信号,但服务端慢任务不会凭空停止。只有把 context 继续传给数据库、下游 HTTP 调用、消息消费和 goroutine,取消与超时才会真正变成资源释放动作。120 收藏 -
sync.Map.LoadOrStore 会根据键是否已经存在,在并发初始化时返回新值或旧值。本文用一个可运行的缓存初始化例子拆开 loaded、类型断言和重复构造的边界。120 收藏 -
Golang · Go问答 | 1个月前 | 标准库 · golang · 正则表达式 · 字符串处理 · Go问答 · 正则表达式 Go regexp FindAllStringSubmatchIndex 子表达式
Go regexp 的 FindAllStringSubmatchIndex 返回结果中出现 -1,并不代表整体匹配失败,而是某个可选子表达式没有参与本次匹配。本文用一个可运行示例解释下标含义、判断方式和切片边界。120 收藏 -
Go 的 flag.Func 适合把重复出现的命令行参数交给同一个回调逐次处理,但默认值不会自动触发回调,回调返回错误还会改变 Parse 的结果。本文用可运行示例拆清调用次数、参数顺序与失败边界。120 收藏 -
用 Go regexp.Regexp.FindReaderIndex 在 io.RuneReader 上定位流式文本匹配,解释返回值为何是字节区间、UTF-8 字符如何换算,以及为什么方法可能继续向后读取。120 收藏 -
Go 合并多个文本文件时,直接把明确顺序的 os.File 交给 io.MultiReader,再用 io.Copy 流式写入输出文件。本文说明分隔符、文件句柄关闭、中途错误和不完整输出的处理方式。120 收藏 -
Go runtime/trace 文件变大,通常不是压缩工具的问题,而是采集窗口覆盖了太长时间。本文用 trace.Start/Stop 缩短一次操作的采集范围,并介绍 Go 1.25+ FlightRecorder 的 MinAge、MaxBytes 与 WriteTo 用法。120 收藏 -
Go select 不会按 case 的源码顺序固定选择;多个通信同时可运行时会在可运行集合中做均匀伪随机选择。本文用两阶段探测、退避和指标记录,避免把随机选择误判成业务优先级。120 收藏