Go教程技术文章
-
Golang · Go教程 | 4小时前 | 标准库 · JSON · 性能 · Go教程 · 接口设计 · Go io.Writer jsontext encoding/json/v2 流式编码 MarshalWrite
Go 1.27 的 encoding/json/v2 提供 MarshalWrite,可以把值直接编码到 io.Writer;需要 token 级控制时再使用 jsontext.Encoder。本文围绕大对象输出、Writer 错误、内存边界和 API 选择给出原创示例。201 收藏 -
Golang · Go教程 | 2小时前 | 标准库 · 流式处理 · Go教程 · 工程实践 · sum Go write reset hash.Hash crypto/sha1 sha1.New 流式摘要
Go crypto/sha1.New 返回 hash.Hash 后,应让同一条消息的多个分块按顺序 Write 到同一个实例,再用 Sum 读取当前 20 字节摘要;Sum 不清空状态,Reset 才开始下一条消息。本文也说明 SHA-1 不适合新的安全应用。201 收藏 -
Golang · Go教程 | 3星期前 | JSON · bytes.Buffer · Go教程 · encoding/json · Go encoding/json bytes.Buffer json.Compact JSON压缩 JSON空白
Go 的 json.Compact 可以去掉 JSON 结构中的无意义空白,同时保留字符串内容。本文用 bytes.Buffer 组织压缩结果,说明合法输入、非法 JSON、错误处理和 Compact、Marshal、Indent 的用途边界。200 收藏 -
Go 中读取 GOMAXPROCS 当前值时,直接调用 runtime.GOMAXPROCS(0) 即可。本文说明它为什么不会修改设置、默认值从哪里来,以及如何把结果用于启动诊断。200 收藏 -
Go 的 json.RawMessage 适合处理外层结构固定、内层字段动态的 JSON。本文说明怎样先保留未知 payload,再按 kind 延迟解码,并在修改外层字段后通过二次 Marshal 保留原始 JSON 值,同时区分字段缺失、null、空对象和非法 JSON。200 收藏 -
讲清 Go regexp.ExpandString 如何消费 FindSubmatchIndex 的匹配区间,用命名捕获组生成替换文本,并处理模板歧义、未匹配组和追加缓冲区。200 收藏 -
Go 1.23 新增的 unique.Make 可以把 comparable 值转换成可比较的 Handle,同值输入得到相等句柄。本文从触发信号、最小写法、Value 浅拷贝和边界处理说明怎样使用它,不把唯一化误当成通用缓存。200 收藏 -
使用 go-ini 读取 INI 时,可以用嵌套结构体上的 ini 标签对应节名,再用字段标签对应键名;本文给出 MapTo、StrictMapTo、类型转换和常见排查边界。200 收藏 -
Go snowflake 生成的编号可以恢复出节点号和同一毫秒内的序列值。本文从字符串与 int64 两种输入开始,说明 Node、Step、默认位布局、自定义位宽以及弃用 API 的维护边界。200 收藏 -
Go os.Args 判断缺少命令参数时,应先检查 len(os.Args) 是否小于所需参数数量,再访问对应下标。本文说明程序名与位置参数的关系,区分缺少参数和空字符串,并介绍何时交给 flag 解析选项。200 收藏 -
os.Root.WriteFile 适合直接写入并允许覆盖;如果业务要求目标已存在就失败,应改用 Root.OpenFile 加 O_CREATE|O_EXCL,再用 errors.Is 判断 os.ErrExist。本文还说明 Root 相对路径、父目录、权限位和 Close 错误的处理边界。200 收藏 -
Go 的 archive/zip 提供 OpenReader 和 NewReader 两种读取入口。本文从逐项遍历 ZIP 条目开始,说明怎样区分目录、打开文件内容、限制读取范围并处理关闭和读取错误,最后封装一个可复用的读取函数。200 收藏 -
Golang · Go教程 | 1天前 | 标准库 · 错误处理 · Go教程 · 数据导入 · csv Go encoding/csv csv.Reader 表头 FieldsPerRecord ParseError 字段位置
Go 的 encoding/csv 不会自动跳过表头。本文说明如何先消费第一条记录,再按表头建立字段名到 0-based 下标的映射;同时比较固定字段数与变长字段数的设置,并处理 EOF、ErrFieldCount、ParseError、FieldPos 和 InputOffset。200 收藏 -
Go html/template 会按 URL 上下文处理 href,但业务协议允许列表仍应在数据层明确限制。本文用普通 string、http/https 白名单和根路径规则,说明如何拒绝危险协议并保留模板转义。199 收藏 -
Go 接入 HTTP/3 时,优先用 quic-go 的 http3.Transport 或 http3.Server;只有需要自定义 UDP、共享 socket 或多协议分流时,再接入 quic.Transport。199 收藏