Go教程技术文章
-
Go container/list.InsertBefore 返回 nil,通常不是插入位置写错,而是 mark 并不属于当前 List。本文从 Element 的所属关系和标准库源码出发,说明跨链表、已移除节点、nil 返回值与安全插入写法。278 收藏 -
解释 iter.Pull 的 next、stop 与提前退出责任,对比直接 range 和手动拉取,提供带清理标记的示例,并说明 defer 作用域、自然耗尽及重复停止的边界。390 收藏 -
Go database/sql.DB.Stats 返回的是连接池累计与瞬时状态。本文说明如何读取 InUse、Idle、WaitCount 和 WaitDuration,用连续采样计算等待窗口,并区分连接池触顶与数据库服务器慢查询。238 收藏 -
Go database/sql.ColumnTypes 可以读取动态查询结果的列名、数据库类型名和可空信息。本文说明 Name、DatabaseTypeName、Nullable 的边界,重点解释 Nullable 的 ok=false 为什么不能当成不可空。191 收藏 -
Go net.ParseIP 会把 IPv4 以 IPv4-mapped IPv6 形式返回。本文说明为什么不能直接按切片长度比较,以及如何用 IP.Equal 做语义判断、用 To4 生成统一的 IPv4 表示,并区分真正 IPv6。339 收藏 -
解释 RawBytes 的借用期限与切片共享,展示当前行复制和直接 Scan 到 []byte 的写法,并说明异步移交、NULL、Rows.Err 与关闭结果集的边界。424 收藏 -
用 Go httptrace 的 DNSStart 和 DNSDone 回调单独测量一次 HTTP 请求的 DNS 解析耗时,并处理失败、缓存与并发回调边界。283 收藏 -
httptest.NewRequest 构造的是直接交给 handler 的入站测试请求,RemoteAddr 的固定值是稳定的默认哨兵,不代表真实客户端地址。本文说明它与 target、Host、Proto、TLS 的关系,并给出覆盖字段和改用 httptest.Server 的判断方式。179 收藏 -
Go testing/synctest 可以在隔离测试气泡内使用虚拟时钟,让定时任务测试不必等待真实秒数。本文用 time.AfterFunc 示例比较真实时间、注入时钟和 synctest,并说明 Test、Wait、Sleep 的边界。165 收藏 -
解释 synctest 的任务归属、channel 与 timer 关联边界,给出自包含通知测试,说明 Wait 的观察范围及启动、取消、退出应如何放进同一气泡。105 收藏 -
Go encoding/hex 的 Dumper 按 hexdump -C 形式把字节写入 io.Writer。若最后一行不足 16 字节,Close 会补齐空白、ASCII 右栏和换行;本文说明 Write、Close、错误处理以及与 hex.Dump 的选择边界。169 收藏 -
Go encoding/base32 默认会生成带等号的 Base32 字符串,WithPadding(base32.NoPadding) 则关闭填充。本文解释两种格式的差异,给出带等号、无填充和混合历史数据的解码写法,并说明如何用统一编码策略完成迁移。405 收藏 -
Golang · Go教程 | 1小时前 | 标准库 · 文件读取 · Go教程 · Go archive/zip bytes.Reader os.File io.ReaderAt zip.NewReader ZIP中央目录
Go 的 zip.NewReader 需要 io.ReaderAt 和整个 ZIP 的字节大小。本文解释 size 如何帮助定位文件末尾的中央目录,并分别给出 os.File、bytes.Reader 的正确写法,说明传读取长度、剩余长度和目录大小为什么会出错。473 收藏 -
使用 FileInfoHeader、SetMode、Modified 和 CreateHeader 保存 ZIP 条目名称、权限与修改时间,给出普通文件归档示例,并说明头所有权、关闭错误与跨平台恢复边界。487 收藏 -
从 Read、ReadAt、Size 和 io.EOF 的组合判断 Go io.SectionReader 是否读完整区间,覆盖顺序读取、固定偏移读取和四种边界情况。419 收藏