Go语言技术文章
-
Go embed.FS 保留完整目录树,fs.Sub 可以把 web 子目录暴露为新的文件系统根目录。本文用最小代码说明路径变化、fs.ReadFile 检查方法以及接入 http.FileServer 时的常见错误。341 收藏 -
Go fuzz corpus 报格式错误时,先定位 testdata/fuzz 中的具体文件,再核对 go test fuzz v1、参数数量、类型与顺序,最后用单条语料完成最小复现。357 收藏 -
Golang · Go教程 | 1个月前 | 事务 · go · database/sql · Go database/sql readonly TxOptions driver.ConnBeginTx
Go 的 sql.TxOptions.ReadOnly 通过 DB.BeginTx 传给 driver.ConnBeginTx,是否真正形成只读事务取决于驱动实现。本文拆解传递路径、错误边界和连接池收尾方式。458 收藏 -
t.Parallel 不是把子测试函数立即丢到后台执行,而是在调用点暂停,等父测试函数返回后再进入并行阶段。理解这个边界,才能正确处理循环变量、共享资源和测试并发上限。256 收藏 -
Go 的 database/sql Conn.Raw 只能在回调期间访问底层驱动连接。本文说明如何取得专用 Conn、判断驱动能力、处理 driver.ErrBadConn,并解释为什么不能把 driverConn 保存到回调之外。369 收藏 -
Go t.Run 名称含斜杠时,-run 会把测试全名按斜杠分段匹配。本文用 HTTP/GET 案例说明分段正则、双斜杠空片段、默认不锚定与精确筛选的写法。180 收藏 -
Go 的 database/sql.QueryRowContext 不直接返回查询错误,真正的结果要从 Row.Scan 获取。本文用 sql.ErrNoRows 和 errors.Is 区分未找到、数据库失败与成功,并整理封装和边界处理。457 收藏 -
Golang · Go问答 | 1个月前 | 单元测试 · 错误处理 · go · Go testing.T Cleanup失败 Go t.Cleanup错误处理 Go测试清理函数继续执行 Go测试失败不终止 Go测试资源释放排查
t.Cleanup 是测试结束阶段的清理回调,失败只会影响测试结果或当前清理函数,不会回到注册点打断已经继续执行的测试体。本文按执行时机、失败标记和清理顺序拆解排查方法。267 收藏 -
Go 的 hash.Hash.Sum 会把当前摘要追加到传入切片,并且不改变哈希状态。本文用 sha256 示例说明 nil、前缀、容量复用和继续 Write 的正确写法。263 收藏 -
Go race 报告没有栈信息时,先区分没有触发竞态、历史栈恢复失败和日志截断,再用 go test 的 -run、-count、-cpu 与 GORACE 的 history_size、log_path 提高复现和定位效率。156 收藏 -
Go 里 crypto/sha256.New 和 sha256.Sum256 都能计算 SHA-256,但适用场景不同:一次性 []byte 直接用 Sum256,文件、网络流和分块数据用 New。本文用代码、返回类型和边界清单说明如何选择。247 收藏 -
Go trace 的 scheduler latency 与 CPU profile 统计对象不同。本文用同一段负载采集两份画像,解释如何区分调度排队、CPU 热点和阻塞等待,并给出复采检查清单。460 收藏 -
Go 的 CertPool.AppendCertsFromPEM 返回 true 只表示至少一个 PEM 证书解析成功,并不代表所有证书有效或已经建立信任链。本文拆解 true/false 边界,给出逐块诊断和 Certificate.Verify 的分层判断方法。445 收藏 -
从 Go pprof goroutine profile 的等待状态和栈顶函数入手,区分通道、锁、网络、定时器与可运行协程,并说明何时切换到 block、mutex profile 或 trace。330 收藏 -
通过包装 tls.ClientSessionCache 记录 Get、Put 与命中,再用 ConnectionState.DidResume 区分缓存命中、TCP 连接复用和真正的 TLS 会话恢复。463 收藏