用Go语言重写我的365天穿搭记录,从零搭建一个属于自己的阿茶日记
- 体育
- 2026-08-24 17:37:29
- 86
你有没有刷到过那种“365天穿搭不重样”的博主?我最初刷到阿茶的视频时,第一反应是——这姑娘家里得有多大衣帽间啊,后来才晓得,人家是每天对着同一面白墙,用手机支架拍的,真正打动我的不是衣服多贵,而是她那个坚持的笨拙感:有时候袜子颜色搭错了,她会对着镜头笑场,然后重新录一遍,我心想,这不就是普通人的日常吗?我这个写了好几年Go代码的“格子衫专业户”,决定用我自己的方式,复刻一个“阿茶的365天穿搭视频”——不过不是拍视频,而是写一个纯Go语言的命令行工具,用来记录和复盘我每天的穿搭。
听到这儿你可能觉得我疯了,但别急,听我说完,用Go写这个工具,其实特别贴合穿搭记录这个场景——Go编译出来就是个单一可执行文件,我丢在电脑里,每天敲一行命令就能记一笔,不用联网,不用开APP,就像阿茶每天对着镜子拍一张照片那样自然,而且Go的time包和map结构,天生就是干这事的料。
先搭个“衣橱”的数据结构:你得知道每天穿了个啥
阿茶视频里最核心的就是那面墙和她的衣架,在Go里,我们的“衣架”就是一个结构体,我一开始想得特别简单:
type Outfit struct {
Date string
Top string
Bottom string
Shoes string
Accessory string
Note string
}
但写了两天后发现不够用,因为阿茶视频里有个很重要的点:她会在月底总结“本月出镜率最高的单品” ,如果我只存字符串,那我得手动数,于是我从“用户价值”出发——我到底想从这个记录里得到什么?是观察自己的重复购买习惯,还是单纯记录心情?最后我决定加一个Tag字段,类似“上班”、“约会”、“周末遛弯”这种场景标签,这样一来,我用Go的slice存所有记录,再用map按Tag归类,统计起来就非常方便了。
这里有个小插曲:我一开始用encoding/json来存数据文件,后来发现老是要处理换行转义,烦得很,后来索性用encoding/csv,每天一行,干净利落,阿茶视频里她也是按日期顺序放的,这个习惯倒是很一致。
核心功能:记录和回顾的“双循环”
写这个工具其实就两大块:输入(记录今天穿啥)和输出(回顾过去一周/一月),这正好对应阿茶视频里的两个动作:拍视频和剪视频。
记录当天穿搭:像发朋友圈一样简单
我用flag包做了个极简命令行接口,比如我今天穿了一件燕麦色大衣、深蓝牛仔裤、白色帆布鞋,配了一条灰色围巾,我就在终端里敲:
go run tea.go -top "燕麦大衣" -bottom "深蓝牛仔裤" -shoes "白帆布鞋" -acc "灰围巾" -tag "通勤" -note "地铁里热死了"
要是哪天偷懒不想打字,我加了个-today参数,它自动用time.Now()获取日期,然后默认值拉满,写代码的时候我就在想,阿茶她早上赶时间的时候,估计也就是抓一件套一件,哪有心思摆拍,所以这个工具也得允许灰色地带——我允许Top字段留空,存"无记录",反正穿搭记录本来就是给自己看的,又不是考试。
这里用到了费曼技巧的一层意思——用最简单的输入换取最清晰的输出,你别管底层怎么存的,你得让用户(就是我自己)五秒钟内完成记录,这比那些需要打开APP、加载图片、选滤镜的软件快多了。
回顾:喂给“过去”一眼看穿
光记录不回顾,等于没穿,阿茶视频最绝的不是每天那十几秒,而是第七天那期“一周总结” ,我用Go的sort包和time包复刻了这个功能,我写了个weekly子命令,它读取CSV文件,提取最近7天的记录,然后按颜色系归类——是的,我又加了一个Color字段。
这样我就能看到:我是不是一个冬天都在穿黑色?我是不是每周三都下意识穿同一件卫衣?用Go的map[string]int统计一下,一目了然。
| 日期 | 上衣颜色 | 下装 | 场景标签 |
|---|---|---|---|
| 12/01 | 黑 | 黑 | 通勤 |
| 12/02 | 黑 | 灰 | 通勤 |
| 12/03 | 藏青 | 黑 | 约会 |
你说这数据多了能干嘛?它能让我在下次买衣服前,打开终端看一眼——哦,我黑色高领毛衣已经有4件了,别买了,这就是用Go代码对抗消费主义,虽然听起来有点讽刺,但对我这种程序员来说,比刷小红书管用。
进阶玩法:模仿阿茶的“心情色彩”索引
阿茶视频有个隐藏亮点:她会在画面角落放个小小的表情符号,比如那天赶地铁摔了一跤,她放个😂;那天升职加薪,她放个🌟,我在Go里也搞了个Mood字段,用rune类型存储,你可以在命令行里直接输入-mood "😤",然后我用unicode/utf8包统计频率,看看哪些情绪最常伴随我穿某件衣服。
这其实就是个简单的关联分析,但Go的map用起来特别顺手,比如我发现,每次我穿那件绿色冲锋衣出门,心情值大多是“困”,后来我才意识到,那是因为我只有熬夜加班第二天才随手抓那件衣服。这算不算一种自我察觉? 阿茶在视频里说过,穿搭就是心情的外化,用Go把这个外化过程量化,我觉得挺有意思的。
365天”的执念:别用“完美主义”杀死习惯
阿茶最让我佩服的不是她搭配得有多好,而是她有一天发烧到39度,还是对着镜头说“今日穿搭,睡衣,健康最重要”,所以我的这个Go工具也特意设计了一个-skip参数,允许你跳过某天不记录,CSV里那一行留空就行。
我用os.OpenFile配合O_APPEND标志,保证每次写入都是追加模式,不会覆盖历史,哪怕你一个月没打开过这个工具,之前的记录还在,这就和费曼学习法的核心理念不谋而合——你不需要追求一次性的完美输出,你要的是复习的连续性和偏差的容忍度。
有一次我出差去外地,忘了带那件常穿的基础款T恤,记录里那天直接写成Top="临时买的破T恤",回头翻记录看到这条,自己都笑了,这种不完美的真实感,正是阿茶视频的张力所在。
给想抄作业的同行的几个小配方
要是你也想搞一个,我建议你从这三个点入手,别贪多:
- 先解决“记录”这个动作的摩擦成本,反正我用
flag包,双击一个.bat文件就能弹出来输入框,全部参数用空格隔开,不用记语法。 - 你不需要数据库,一个CSV文件够了,我用
encoding/csv的Reader每次全量读进去,数据量就365行,性能完全没问题。 - 要有“周末回顾”的仪式感,我写了个
summary子命令,它会用fmt.Printf格式化输出一张表格,显示本周出现频率前三的颜色、单品、情绪词,每次都像拆盲盒。
阿茶在她的视频简介里写:“记录本身,就是一种生活态度。”用Go记录穿搭,就是用代码的线性思维去捕捉生活的非线性碎片,这两种东西碰撞在一起,竟然擦出了一种奇怪的秩序感。
有一次我在终端里翻到第200天的那条记录,写的是“穿着那件起球的灰色卫衣,去吃了新开的拉面店”,那一刻我想起来,那天是2023年11月,窗外的风很大,我吃到了今年最好吃的溏心蛋,这个片段,要不是因为敲了那行命令,可能就永远埋在记忆里了,就像阿茶说,她回看自己年初的视频时,才发现原来那天她第一次戴了那顶贝雷帽。
我写的这个tea.go文件,现在已经有800多行了,里面有些注释写得特别随意,这行别删,删了会忘记带伞”,它不像什么精巧的开源项目,更像一本会漏水的日记本,但我每天敲那行命令的时候,内心的感觉和阿茶对着镜头说“今天第153天”是一样的——又攒了一天,真好。
你打开这个文件的感觉,就像我第一次看到阿茶那面白墙,没有滤镜,没有布景,只有“坚持”本身,而Go语言,恰好是我最熟悉的那个“支架”,如果哪天你也在小区门口看到有人对着手机支架傻笑,那可能不是我,但看到有人蹲在路边敲电脑,那可能真就是我——在记录今天的穿搭是“格子衬衫+牛仔裤”,并顺手给明天的自己留个言。
