用Go写个one体育小工具,我的健身数据终于不躺平了

为什么突然想写个“one体育”?前阵子我办了张健身卡,教练天天催我打卡,说“数据不记录等于白练”,我瞅了眼手机里那些花里胡哨的健身A...

为什么突然想写个“one体育”?

前阵子我办了张健身卡,教练天天催我打卡,说“数据不记录等于白练”,我瞅了眼手机里那些花里胡哨的健身App,广告一大堆,隐私协议比论文还长。我一个写Go的,干嘛不自己造个轮子? 于是就有了这个叫“one体育”的小项目——它不是啥大平台,就是帮你把每次跑步、撸铁、游泳的数据,用Go写进本地文件,再算点简单指标。

说实话,刚开始我连“心率区间”是啥都搞不清,翻了翻WHO的《身体活动与久坐行为指南》,才明白中等强度运动得让心率保持在最大心率的64%-76%之间(最大心率≈220-年龄)。你看,写代码还得懂点生理学,这知识它自己就钻进脑子了。

用Go写个one体育小工具,我的健身数据终于不躺平了

H2:one体育的核心功能——它到底能干啥?

注意:这个工具不是App,是个命令行程序。 跑完步回家,打开终端敲一句记录,比打开手机点五下快多了。

H3:1. 记录运动数据,用结构体存得明明白白

我定义了个Workout结构体:

type Workout struct {
    Date     time.Time
    Sport    string  // "running", "swimming", "lifting"
    Duration float64 // 分钟
    Distance float64 // 公里
    Calories int
    HRMax    int
    HRAvg    int
}

跑完10公里,填进去:2025-03-15 running 62.5 10.2 680 178 152 数据进了CSV文件,Excel也能打开,绝不搞私有格式。

H3:2. 算两个硬核指标:燃脂效率和恢复时间

  • 燃脂效率 = 消耗卡路里 / 运动分钟数(越高说明单位时间燃脂越猛)
  • 恢复建议 = 根据最大心率与平均心率的差值,套个经验公式:
心率差区间 恢复建议
>30 bpm 明天可以接着练
15-30 bpm 休息一天
<15 bpm 休息两天,多睡觉

表格是运行程序后自动打印的,不是硬编的。 我上周三跑完,心率差才12,程序直接告诉我要歇两天,结果第二天我硬去撸铁,卧推直接少了两片——数据和身体都不会骗人,但人会。 后来老实了。

H2:代码里的“生活气息”——那些小意外和小调整

写这个工具的时候,我犯了个新手错:没处理“游泳”这个运动。 游泳的心率普遍比跑步低15-20 bpm,因为水的冷却效应,我套用跑步的恢复公式,计算出“恢复时间=0”,差点以为自己练成超人,后来查了美国运动医学会(ACSM)的资料,给游泳单独加了个偏移量:

func adjustHR(sport string, hr int) float64 {
    switch sport {
    case "swimming":
        return float64(hr) + 15.0
    default:
        return float64(hr)
    }
}

你看,写代码和写日记一样,得边写边改。 我现在跑完步,数据懒得记录?那就只填个“距离”和“时间”,其他字段用默认值——程序会警告,但不会崩溃。生活已经很累了,工具别给人添堵。

H2:怎么用?三步走,比点外卖还简单

  1. 下载或克隆项目(就一个.go文件加一个CSV数据库)
  2. 编译go build -o one
  3. 记录./one record running --duration 45 --distance 7.2

然后它就打印出:

你跑了7.2公里,消耗503卡,燃脂效率11.2 cal/min,明天建议休息半天。

没图表,没排行榜,不联网,不推送广告。 数据就在你电脑里,想怎么分析都行——我甚至写了个小脚本,按月统计“运动次数”和“总卡路里”,放桌上当电子屏保。

H2:为什么用Go写?因为快、干净、好编译

  • 编译出来的二进制文件就5MB,放U盘里带着跑
  • Go的time包处理日期天然靠谱,不像某些语言闹“世纪虫”
  • 跨平台,Windows/Mac/Linux都能跑,教练的安卓平板也能装(不是广告,是实话)

对比过Python版本:Go启动快0.3秒,但写代码多花了2小时。 可这2小时换来的是,我用了三个月都没改过一行业务代码——Go的静态类型在运动数据这种整数、浮点混着来的场景里,省了多少“TypeError: str + int”的破事啊。

自然收尾

现在每次跑完步,坐在阳台喘气的时候,我打开终端敲几行字,看着屏幕上的数字跳动。以前用健身App,总觉得数据是给别人看的;现在这些CSV文件躺在我笔记本里,像石头一样实在。 可能这就是自由软件的感觉吧——工具不该绑架你,该让你更了解自己。

哦对了,如果你也想要这个“one体育”的源码,我放GitHub私有仓里了,名字就叫one-sport,去拉吧,别客气。

本文来自作者[kyadmin]投稿,不代表ac米兰官网立场,如若转载,请注明出处:http://www.milanomuse.com/tiyu/301.html

(14)

文章推荐

发表回复

本站作者才能评论

评论列表(4条)

  • kyadmin
    kyadmin 2026-06-16

    我是ac米兰官网的签约作者“kyadmin”!

  • kyadmin
    kyadmin 2026-06-16

    希望本篇文章《用Go写个one体育小工具,我的健身数据终于不躺平了》能对你有所帮助!

  • kyadmin
    kyadmin 2026-06-16

    本站[ac米兰官网]内容主要涵盖:AC米兰,ac米兰中文,AC米兰官网

  • kyadmin
    kyadmin 2026-06-16

    本文概览:为什么突然想写个“one体育”?前阵子我办了张健身卡,教练天天催我打卡,说“数据不记录等于白练”,我瞅了眼手机里那些花里胡哨的健身A...

    联系我们

    工作时间:周一至周五,9:30-18:30,节假日休息

    关注我们