Go教程技术文章
-
用 embed.FS 把 Goose SQL 迁移打进 Go 程序,说明目录保留、SetBaseFS、数据库方言与连接配置,提供完整迁移命令,并解释重新构建、只读文件和发布执行责任。456 收藏 -
Go netlink 的 AttributeEncoder.Nested 用嵌套编码器封装一组子属性,并自动设置 Nested 标志。本文从属性编号、字节序、编码错误到 Nested 解码,给出一套可维护的嵌套字段写法和发布前检查清单。456 收藏 -
使用 Go image/gif 的 DecodeAll 读取 GIF 全部帧,导出每帧 Delay、可读播放时长和 LoopCount 循环语义,并说明 Decode 与 DecodeAll 的迁移边界。456 收藏 -
用 Go 的 net/http/httputil.ReverseProxy 记录入站请求、改写后的出站请求、后端响应和代理错误,说明 DumpRequestOut、Rewrite、ModifyResponse 与 ErrorHandler 的职责边界。455 收藏 -
Go slog 不会自动把 context 中的任意值写成日志字段。本文按请求入口、logger.With、InfoContext 和 Handler 包装四个层次,给出补充 request_id 等上下文字段的安全写法与迁移检查清单。455 收藏 -
Go encoding/hex.Dumper 可以把写入的字节流转换成 hexdump -C 风格的十六进制转储。本文从日志排查场景出发,说明如何接入 io.Writer、为什么必须处理 Close,以及如何区分写入失败和转储收尾边界。455 收藏 -
Go net/url.URL 修改路径时,直接重建整条 URL 容易丢掉查询参数和片段。本文区分 Path、RawPath 与 RawQuery,说明怎样用 Path、JoinPath 以及 Query 安全更新路径和参数。455 收藏 -
本文用 Go parser.ParseFile 构造 AST,再通过 ast.PreorderStack 在访问 CallExpr 时读取父节点栈,识别所属函数,并说明返回 false 跳过子树、空栈和 Go 版本兼容边界。455 收藏 -
Go io.TeeReader 可以在主流程单遍读取时,把同一批字节同步写给记录器或摘要计算器。本文解释无内部缓冲、写入错误转读错误和内存边界,并给出选择清单。454 收藏 -
Go 代码中的调试提示、进度信息或可选输出不一定都值得写入测试日志。把输出目标抽象为 io.Writer 后,测试可以注入 io.Discard 让输出静默,也可以换成 bytes.Buffer 做精确断言;本文说明两种方式的边界和错误处理。454 收藏 -
Go gzip.Reader 用 Reset 串行复用,但 Close 不会关闭底层文件,也不能代替读到 EOF;示例区分超限拒绝、尾部校验与逐文件清理。454 收藏 -
Go regexp.Regexp.AppendText 会把正则表达式文本追加到已有字节缓冲区,输出等同于 String,但不会记录 CompilePOSIX 或 Longest 等改变匹配语义的设置。本文说明缓冲区复用、返回值和可恢复配置的边界。454 收藏 -
通过AddSource与ReplaceAttr控制Go slog日志的源码信息,展示短文件名与删除source的写法,说明Handler绑定、封装调用点和定位成本之间的取舍。454 收藏 -
Go bytes.Repeat 会返回由多个 b 拼成的新字节切片,但负数次数或结果长度溢出会触发 panic。本文从固定填充和测试数据场景出发,说明零次数、空输入、参数保护、结果规模和改用流式写入的边界。454 收藏 -
Golang · Go教程 | 3天前 | 网络编程 · 标准库 · Go教程 · HTTP客户端 · Go 错误处理 errors.Is errors.As net/http.Client Client.Do
Go net/http.Client 的 error、HTTP 状态码和响应体读取错误属于不同阶段。本文用 %w 保留原始 cause,用 url.Error 和自定义 HTTPError 承载上下文,并说明 Body 关闭、读取、重试边界。454 收藏