Go语言技术文章
-
Go 的 exec.Cmd 可以通过 ExtraFiles 把父进程已经打开的管道或套接字传给子进程。关键规则是 ExtraFiles[i] 在子进程中从文件描述符 3+i 开始,而不是沿用父进程原来的编号。452 收藏 -
用 Go 的 signal.NotifyContext 把中断和终止信号接到根 context,统一驱动服务退出;本文说明 ctx.Done、defer stop、context.Cause 以及 SIGTERM、os.Kill 的边界。105 收藏 -
Go flag 的多子命令程序可以为每个子命令创建独立 FlagSet,并分别设置 Usage 与输出流。本文用 serve、config 示例说明帮助文本隔离、解析错误处理和验证方法。350 收藏 -
Go flag 使用独立双短横线结束包装层选项解析,通过 Args 保留子命令参数。本文给出完整示例,说明普通参数提前终止、第二个分隔符、空参数与进程接口的处理边界。153 收藏 -
用 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 收藏 -
本文说明 Python asyncio.as_completed 如何按完成顺序消费任务结果,并处理异常、超时、任务身份和剩余任务清理。144 收藏 -
区分 Java 模块系统中 exports 与 opens 的职责,结合 module-info.java、setAccessible、trySetAccessible 和 Module API,给出框架反射排障与最小开放配置方法。478 收藏