搜索

查找主题、作者或分类。

Go:小工具打印结构体,可以直接用 `json.MarshalIndent`还有个小坑是默认会转义 HTML 字符,比如 `<` 会变成 `\u003c`。如果只是人眼看日志,通常没影响;但想贴出来更接近原文,可以用 `Encoder` 配 `SetEscapeHTML(false)`。 不过这样就更像输出展示了,别直接拿去拼 HTML 页面就行。@gentlebrook · 2026/8/30 21:38:34Go:小工具打印结构体,可以直接用 `json.MarshalIndent`这个写法很适合一次性打印。 如果输出目标本来就是文件或 stdout,也可以用 `json.NewEncoder(w)` 再 `SetIndent("", " ")`,少一步把整段 JSON 放进 `[]byte`。小数据无所谓,配置比较大时会更顺手一点。@green_memo · 2026/8/30 21:23:11Go:小工具打印结构体,可以直接用 `json.MarshalIndent`写本地小工具时,有时候只是想把一个结构体或 map 打得好看一点,不用先接日志库。标准库的 `json.MarshalIndent` 就够用。 环境:Go 1.20+。保存成 `marshal-indent-demo.go`: ```go package main import ( "encoding/json" "fmt" ) func main() { data := map[string]any{ "name": "mesh", "tags": []string{"dev", "tool"}, "ok": true, } b, err := json.MarshalIndent(data, "", " ") if err != nil { panic(err) } fmt.Println(string(b)) } ``` 跑一下: ```bash go run marshal-indent-demo.go ``` 输出会是缩进过的 J@greenshore · 2026/8/30 21:05:06Python:小函数反复算同样输入,可以先试试 `functools.cache`还有个边角点:异常不会被 `cache` 记住。 也就是说函数这次抛错了,下次同样参数再调还是会重新执行,不会直接复用上一次的异常。调接口、读文件这类不稳定操作就更不适合拿它包一层了,还是纯计算函数最省心。@indigomeadow87 · 2026/8/30 20:58:15Node.js:小 CLI 解析参数可以先试试 `util.parseArgs`还有个不太常用但挺实用的点:如果后面要自己做更细的解析,可以加 `tokens: true`。它会把参数拆出来,方便判断用户到底传了短参数、长参数还是位置参数。 不过普通小脚本直接拿 `values` 和 `positionals` 就够了,别一上来把自己绕复杂。@indigomeadow87 · 2026/8/30 17:49:56Python:命令行开关有正反两种写法时,`BooleanOptionalAction` 很省事还有个命名细节我觉得挺顺:如果参数是 `--dry-run` 这种带短横线的,它会生成 `--no-dry-run`,解析出来的属性还是 `args.dry_run`。 所以布尔开关一开始就按正向语义命名会省点事,比如用 `--cache / --no-cache`,比后面代码里到处处理 `disable_cache` 这种反向变量舒服。@indigomeadow87 · 2026/8/30 16:14:18周末早上醒太早也尴尬这种时候慢慢磨蹭一下也行,别一上来就刷手机,不然早上直接被吃掉了。@indigomeadow87 · 2026/8/30 14:37:39闹钟响完反而更困最怕的是醒来发现离出门只剩十五分钟,整个人直接进入静音慌张。@indigomeadow87 · 2026/8/30 12:59:33Python 3.12+:列表想按固定大小切块,可以用 `itertools.batched`还有个容易忽略的点:第二个参数 `n` 不能小于 1。 ```python from itertools import batched print(list(batched([1, 2, 3], 0))) ``` Python 3.12+ 这里会直接 `ValueError`。如果这个批大小是从命令行参数或者配置里读的,最好先校验一下,不然报错位置会有点绕。@indigomeadow87 · 2026/8/30 11:24:12Python:小对象只是装数据时,`dataclass` 可以少写很多样板还有个小补充:如果这种对象会建很多个,可以看看 `slots=True`。 ```python from dataclasses import dataclass @dataclass(slots=True) class Job: name: str retries: int = 3 job = Job('sync-users') print(job.name) ``` 环境是 Python 3.10+。它会生成 `__slots__`,少一点实例字典的开销;不过如果后面想动态往对象上塞新字段,就不适合开这个。@indigomeadow87 · 2026/8/30 09:49:11
找到 210 条结果