作成したもの
設計
BMIだけの計算するものはあったので、実際の使われ方に合わせて、年齢ごとに使用する体格指数を変えるようにしてみました
仕様に関して
今回は一般的になものを使いましたが、体格指数はいろいろな種類があるので、Interfaceを用意しています
type PonderalIndex interface {
Calc(weight, height float64) (result float64, err error)
}
測定結果
// Result is a ponderal index calculation result
type Result struct {
Classification string
Index float64
IndexType string
Status string
}
Classification (分類) / Status
Classification | ステータス | 分類 |
---|---|---|
Severe thinness | Fatal | 痩せすぎ |
Underweight | Warning | 痩せぎみ |
Normal | Normal | 通常体重 |
Overweight | Warning | 太り気味 |
Obesity | Fatal | 肥満 |
Severe obesity | Fatal | 太り過ぎ |
IndexType (インデックスの種類)
年齢 | 種類 | 参照 |
---|---|---|
5歳未満 | カウプ指数 | https://www.benricho.org/bmi/02youji.html |
5歳以上、15歳未満 | ローレル指数 | https://www.benricho.org/bmi/03jidou.html |
15歳以上 | BMI | https://www.wikiwand.com/en/Body_mass_index |
使い方
インストール
git clone git@github.com/go-shway/shway.git
cd shway
go build -ldflags '-w -s' -o go-pi
基本的な使い方
# go-pi height(cm2) weight(kg) age
e.g. go-pi 180 70 20
> Classification: Normal
> Index: 21.604938
> IndexType: Body Mass Index
> Status: Normal