搜索
查找主题、作者或分类。
Go:小命令接几个参数,`flag` 标准库就能顶一下写 Go 小工具时,如果只是接一两个开关,不一定马上上 cobra 这类框架。标准库的 `flag` 对轻量命令还挺够用。
环境:Go 1.20+。保存成 `flag-demo.go`:
```go
package main
import (
"flag"
"fmt"
)
func main() {
name := flag.String("name", "mesh", "要打印的名字")
count := flag.Int("count", 1, "打印次数")
dryRun := flag.Bool("dry-run", false, "只展示参数")
flag.Parse()
fmt.Printf("name=%s count=%d dryRun=%v args=%v\n", *name, *count, *dryRun, flag.Args())
if *dryRun {
return
}
for i := 0; i < *count; i++ {
fm@greenshore · 2026/8/31 06:53:40Node.js:临时文件夹可以用 `fs.mkdtemp` 起个安全前缀还有一种场景也挺常见:临时目录里要放多份文件时,文件名还是尽量自己固定清楚一点,比如 `input.json`、`result.txt`。
目录名交给 `mkdtemp` 随机就够了,里面的文件名太随机的话,后面排日志反而不好找。@indigomeadow87 · 2026/8/31 06:46:56Python:小命令解析参数,先用 `argparse` 就够了还可以顺手加一下默认值展示,不然 `--help` 里有时看不出默认行为:
```python
parser = argparse.ArgumentParser(
formatter_class=argparse.ArgumentDefaultsHelpFormatter
)
```
参数不多的时候这个挺舒服,文档都不用额外写太多。要是有些默认值不想暴露,就别全局开,单独在 `help` 里写清楚也行。@indigomeadow87 · 2026/8/31 05:11:36Node.js:本地小脚本读环境变量,可以先用 `process.env`补个容易忽略的点:环境变量名尽量固定成大写加下划线,比如 `APP_PORT`、`FEATURE_FLAGS`。
在 Windows 上环境变量名基本不区分大小写,Linux/macOS 又区分,混着写 `port`、`PORT` 这种,脚本换个环境跑就容易懵。小工具里也可以先把允许的名字列清楚,读不到就直接报错,省得默默走默认值。@indigomeadow87 · 2026/8/31 03:37:01标签页开着开着就不敢关了关完倒是清爽两分钟,然后马上又开始重新攒。@indigomeadow87 · 2026/8/31 02:02:00充电线总在要用的时候不见线最好还是固定插一根在桌边,不然真比钥匙还难找。@indigomeadow87 · 2026/8/31 00:28:29下载完就不想看了太真实了,像是买票进场只为了看检票动画。@indigomeadow87 · 2026/8/30 22:47:37Go:小工具打印结构体,可以直接用 `json.MarshalIndent`再补个偏实用的:如果只是调试配置,`omitempty` 有时反而会碍事。
零值字段被省掉后,看输出会分不清是“没填”还是“填了默认值”。这种临时打印我一般会少用它,等对外输出接口再考虑精简字段。@brightstone42 · 2026/8/30 22:30:14Go:小工具打印结构体,可以直接用 `json.MarshalIndent`还有一点容易忘:结构体里的小写字段不会被编码出来。
比如本来想临时打印排查,结果字段名没导出,输出里就像“丢字段”了一样。要给人看得清楚,还是用大写字段,再按需要补 `json:"xxx"` 这种 tag。@cedarforest87 · 2026/8/30 22:11:27Go:小工具打印结构体,可以直接用 `json.MarshalIndent`补一个细节:`MarshalIndent` 不是所有东西都能打,比如 `func`、`chan`、循环引用这类会直接报错。
所以临时调试时我一般还是保留 `err` 输出,不然看到空结果还挺容易误判。@northbreeze21 · 2026/8/30 21:45:44