Go教程技术文章
-
用 host:port 配置示例说明 Go flag.Value 的 String 和 Set 方法、flag.Var 注册方式、非法输入处理以及重复设置策略。241 收藏 -
通过字段白名单和 log/slog 的 ReplaceAttr,为 Go 配置日志建立敏感字段脱敏边界,避免密码、Token 等环境变量原值进入日志。440 收藏 -
Go 使用 gopkg.in/yaml.v3 读取配置时,应先把默认值写入结构体,再解码 YAML;这样文件中出现的字段会覆盖默认值,省略字段仍保留默认策略。本文还说明显式零值、未知键和严格解码的处理边界。412 收藏 -
Go JSON Decoder 在 Decode 前调用 UseNumber,可将动态接口中的数字保留为 json.Number。本文说明低位丢失的排查方法、Int64 范围与错误处理,以及从文本转换大整数的边界。194 收藏 -
Go 的 JSON 联合字段可以先用 RawMessage 保留 payload,再按 type 选择具体结构体二次解析。本文给出分派结构、错误处理和适用边界。288 收藏 -
Go 的 json.Encoder 可以用 SetIndent 设置 prefix 和 indent,让后续 Encode 输出带层级缩进;本文说明最小写法、参数选择、关闭方式,以及它与 MarshalIndent 的区别。256 收藏 -
Go 的 encoding/csv 默认按逗号读取 CSV;遇到分号分隔文件,只需在第一次 Read 或 ReadAll 前设置 Reader.Comma = ';'。本文说明合法分隔符、配置时机、固定列数和错误处理边界。245 收藏 -
Go 读取 CSV 时,FieldPos 可以报告最近一条记录中字段的起始行和字节列;配合 ParseError 与字段边界检查,就能把坏行日志定位到可处理的位置。421 收藏 -
Go 的 encoding/csv.Reader 不会自动移除文件开头的 UTF-8 BOM,首个字段可能因此多出不可见字节。本文用流式包装只检查前三个字节,说明如何保留普通文件、处理短输入并继续使用字段数检查。154 收藏 -
Go sync.Map.Swap 会原子替换键对应的值,并用 loaded 返回值告诉你键此前是否存在。本文用并发状态更新场景说明如何识别首次写入,为什么不要用先 Load 再 Store 代替,以及怎样把返回值接入审计和保护逻辑。230 收藏 -
Go 查询接口的可选参数不宜隐藏在 Context 中。通过显式 Options、默认值校验和类型化追踪标识入口,划清业务输入、请求元数据与取消传播的职责边界。214 收藏 -
Go 处理超出 int64 范围的业务整数时,应使用 math/big 的 big.Int.SetString 完整解析,明确十进制与 base=0 的区别,检查失败标记并在转 int64 前确认范围。378 收藏 -
Go 解析 key=value 配置时,strings.Cut 会在第一次分隔符处分开字符串,并通过 found 区分未找到分隔符的情况。本文从具体输入出发,处理空值、多处分隔符和错误边界。494 收藏 -
Go 日志里遇到换行、制表符、引号或反斜杠时,直接打印 rune 容易让字段边界变得不可读。本文用 strconv.QuoteRune 生成稳定的单引号字符字面量,再比较 ASCII 和图形字符版本,补上无效 Unicode 码点与结构化日志的处理边界。121 收藏 -
使用 Go 标准库 net/mail 解析带显示名的单个邮箱、地址列表和 RFC 2047 编码显示名,区分 Name 与 Address,并说明语法解析和投递校验的边界。415 收藏