Go语言技术文章
-
用 Go BinaryMarshaler 与 BinaryUnmarshaler 实现自定义二进制类型,明确输入副本、独立编码结果、错误原子性以及长度和版本处理,避免切片共享带来数据联动。283 收藏 -
Go 的 textproto.CanonicalMIMEHeaderKey 会把合法 MIME 请求头键名转换成首字母和连字符后字母大写、其余字母小写的形式;本文说明空格和非法字段字节为何原样返回,以及 MIMEHeader 读写与直接 map 访问的边界。283 收藏 -
介绍Go simd实验开关与工具链要求,以整数切片加偏移示例说明向量长度、广播、整组加载和尾部有效数据写回,并用构建约束保留普通实现。283 收藏 -
Go groot 中的 ROOT Directory 是文件内部的对象组织结构,不是操作系统目录。本文用 groot.Open、Keys 和 Get 拆开两层边界,并说明怎样用键名、类名和标题复查读取结果。283 收藏 -
用 Go httptrace 的 DNSStart 和 DNSDone 回调单独测量一次 HTTP 请求的 DNS 解析耗时,并处理失败、缓存与并发回调边界。283 收藏 -
Go mime.WordEncoder.Encode 会把需要编码的中文主题或显示名转换成 RFC 2047 encoded-word;ASCII 普通文本则保持原样。本文说明 QEncoding、BEncoding、字符集和邮件头组装边界。283 收藏 -
database/sql 的 Scan 只会处理文档列出的常见目标类型或 Scanner。本文用自定义金额结构体构造最小复现,再通过 Scanner 处理 int64、[]byte 和 NULL,定位并修复类型转换错误。283 收藏 -
Golang · Go问答 | 4星期前 | 标准库 · 错误处理 · Go问答 · Go encoding/hex DecodeString InvalidByteError ErrLength 十六进制解码
Go 的 hex.DecodeString 失败时,先用 ErrLength 区分奇数长度,再用 InvalidByteError 识别非法字符,最后扫描原始输入得到字节偏移,并用脱敏日志保留可操作的排障信息。282 收藏 -
Go 1.22 起,net/http ServeMux 支持 {id} 与 {path...} 通配符。本文说明如何用 Request.PathValue 读取路径值,并梳理解码、冲突与版本兼容边界。282 收藏 -
讲清 Go netip.AddrFromSlice 对 4 字节、16 字节和非法长度的处理,并说明 IPv4-mapped IPv6、Is4In6 与 Unmap 的转换边界。282 收藏 -
Go HTTP 客户端连接复用异常时,先检查 resp.Body 是否读到 EOF 并及时关闭,再用 httptrace.GotConn 的 Reused 字段观察 Transport 是否复用了连接。本文给出集中式读取模板、状态码场景和异常边界。282 收藏 -
Go net/http Request.MultipartReader 适合把 multipart/form-data 请求按 Part 流式读取,避免 ParseMultipartForm 为大文件建立完整表单结构。本文说明文件与普通字段的分流、整体请求上限、单文件超限判断和错误清理。282 收藏 -
Go go-audio/wav 的 Encoder.Close 会回写 RIFF 与 PCM data 长度,因此输出必须支持 io.WriteSeeker。本文用 os.File 示例说明 Write、Close 和底层文件关闭的正确顺序,并比较内存与管道输出的边界。282 收藏 -
bytes.Buffer.String 返回调用时未读部分的字符串,后续 Write、Read、Reset 不会修改已经取出的 string。本文对比 String、Bytes 和 strings.Builder 的内容范围、生命周期与适用边界。282 收藏 -
围绕 Go maps.Clone 设计配置覆盖接口,区分缺失键、nil 删除与空字符串赋值,明确成功返回可写副本、非法字段错误和失败保留原配置的约定,并提供完整示例。282 收藏