Go语言技术文章
-
Go net.Dialer 的 Timeout 是相对拨号开始的最长时长,Deadline 是绝对截止时刻;二者和 Context 截止时间取最早值。本文用可复用的 DialContext 示例说明设置方式、多地址解析和超时判断。364 收藏 -
处理键值文本时,strings.Cut 适合围绕第一个分隔符取左右两段,strings.Split 适合获取全部片段。本文用 Go 示例说明两者的返回语义、空字段、缺少分隔符和空分隔符边界,并给出选择方法。297 收藏 -
sql.Conn.Raw 能让 Go 程序临时访问驱动连接,但回调结束后 database/sql 只根据返回错误判断连接是否还能用。本文解释修改驱动状态后的复用风险,以及何时应返回 driver.ErrBadConn。334 收藏 -
本文用具体代码说明 Go bytes.Clone 如何解除 []byte 与原切片的底层数组别名,并梳理 nil、空切片、子切片 len/cap 以及缓存和异步交接时的复制边界。324 收藏 -
Go 的 sql.Stmt 可以被多个 goroutine 并发使用,但 Close 不等于取消查询。本文说明正在执行、Rows 返回后和优雅停机时的正确关闭顺序。155 收藏 -
用 bytes.Reader 从指定偏移量读取时,Seek 会移动当前位置,ReadAt 不会移动游标,切片则改变可见数据范围。本文用示例说明三种写法与越界处理。473 收藏 -
讲清 Go sql.Tx 回滚失败时如何保留原始业务错误,使用 errors.Join 组合异常,并区分 ErrTxDone 与 Commit 失败。106 收藏 -
Golang · Go教程 | 1个月前 | 性能优化 · Go教程 · go bytes.Buffer bytes.Buffer Reset Go 缓冲区复用 Go Buffer 容量复用 Go Bytes 切片别名
Go 复用 bytes.Buffer 时,Reset 会把可读长度归零并保留底层存储。本文用连续写入、容量观察和 Bytes 切片复制说明正确用法与生命周期边界。327 收藏 -
Go database/sql 遍历结果集时,Rows.Next 返回 false 可能是正常耗尽,也可能是驱动或 context 错误。本文拆分 Scan、Rows.Err 和 Close 的职责,并给出可复用查询函数写法。263 收藏 -
Go 中 bufio.Writer.Write 成功并不代表底层资源已经写入,Flush 才会把缓冲内容交给文件、网络或自定义 io.Writer。本文说明 Flush 报错的原因、Write 与 Flush 的边界,以及文件、重试和 Sync 的处理清单。367 收藏 -
Go 使用 sql.NullString 扫描可空文本列时,必须同时判断 String 和 Valid。本文用表格、代码和排查清单说明如何区分 NULL、空字符串与普通文本,并正确写回数据库。447 收藏 -
bufio.Reader.ReadString 读不到分隔符时,可能返回已经读到的字符串和 io.EOF。本文用返回值边界、最后一段处理和读取循环说明如何避免丢数据、误报错误与死循环。470 收藏 -
QueryContext 超时并不自动等于连接损坏。本文从 QueryContext、Rows、驱动取消接口和 ErrBadConn 四层判断连接是否还能安全回到连接池。270 收藏 -
通过 go mod why 的包级、模块级和 -vendor 查询,理解依赖路径范围,避免把解释命令误当成清理或版本选择命令。420 收藏 -
从 Go string 与 C char 指针的表示差异出发,说明 C.CString、C.GoString、C.GoStringN 的选择、C.free 的释放责任,以及异步保存指针时的生命周期边界。432 收藏