Go语言技术文章
-
使用 golang.org/x/net/html 解析网页中的 a[href],再用 net/url 按页面基准地址补全相对链接,并说明片段、特殊 scheme 与外链控制的处理边界。298 收藏 -
Go encoding/xml 遇到带命名空间前缀的标签时,匹配关键不是 soap、o 这样的前缀,而是命名空间 URI 与 Local 名。本文用结构体标签和 xml.Name 说明排查方法。428 收藏 -
Go 处理带 BOM 的 UTF-16 文件时,可以用 golang.org/x/text 的 unicode 与 transform 按 BOM 识别大小端,再流式写出 UTF-8。本文给出临时文件替换方案,并说明缺少 BOM、乱码和并发写入的边界。401 收藏 -
Go 的 int 字段不能直接接收 JSON 字符串中的数字。固定返回 "123" 时使用 json:",string",同时兼容数字和字符串时用自定义 UnmarshalJSON 配合 strconv.ParseInt,并明确空值、小数和溢出策略。434 收藏 -
Go 的 encoding/gob 适合在 Go 程序之间保存结构化本地缓存。本文用带版本和过期时间的结构体演示原子写入、恢复、缓存失效处理,以及导出字段和结构体演进时的边界。472 收藏 -
Go 的 time.Time 只按 RFC3339 读取 JSON 时间。遇到 yyyy-MM-dd HH:mm:ss、仅日期或缺少时区的字段,应先接收字符串,再用明确 layout 解析;本文给出结构体、自定义类型和排查清单。302 收藏 -
用 encoding/xml.Decoder 按 Token 扫描大型 XML,只在命中目标元素时 DecodeElement,并用 Skip 跳过无关大节点,降低整体加载带来的内存峰值。470 收藏 -
Go 的 encoding/json 默认会忽略结构体没有定义的 JSON 字段。本文说明如何用 Decoder.DisallowUnknownFields 严格拒绝多余字段,并把它安全接入 HTTP 接口。273 收藏 -
用 encoding/binary 按协议选择 BigEndian 或 LittleEndian,正确读写固定宽度整数,区分结构体布局、切片边界和 Uvarint 变长编码。459 收藏 -
Go 的 nil slice 和非 nil 空 slice 长度都为 0,但 encoding/json 默认分别编码为 null 和空数组。本文解释两种状态、omitempty 的影响,以及如何在 API 响应层稳定输出 []。153 收藏 -
用 io.Pipe 把 Go 的数据生成器直接接到 HTTP 请求体,边编码边上传,不落地临时文件,并正确处理关闭、取消和错误传递。456 收藏 -
Go 的 http.Client.Do 返回 404 时 err 仍可能是 nil,因为非 2xx 状态属于服务器响应,不是传输错误。本文区分 err、StatusCode 和响应体读取错误,给出关闭 Body、限制错误正文并映射业务错误的写法。496 收藏 -
用 httptest.NewTLSServer 创建带测试证书的 HTTPS 服务,再使用 server.Client 发起请求,完成 Go 接口单元测试并避开本地证书校验误区。318 收藏 -
Go 的 encoding/json 默认会把 JSON 字符串中的小于号写成 \u003c,这通常是 HTML 安全转义而不是乱码。本文说明如何判断、何时使用 SetEscapeHTML(false),以及关闭后仍需遵守的 HTML 安全边界。474 收藏 -
Golang · Go教程 | 1天前 | 文件操作 · Go教程 · 文本处理 · io.MultiReader · Go io.Copy io.MultiReader 文本文件合并 os.Open
Go 合并多个文本文件时,直接把明确顺序的 os.File 交给 io.MultiReader,再用 io.Copy 流式写入输出文件。本文说明分隔符、文件句柄关闭、中途错误和不完整输出的处理方式。120 收藏