/home/by-natures/dev*

データ界隈で働くエンジニアとしての技術的なメモと、たまに普通の日記。

2018/10/23 iota のデフォルト値

去年、左腕の骨に生まれつきの病気があることがわかって、流蝋骨症(Melorheostosis)というのですが、年に一度大学病院で診てもらっています。昨日診てもらったところ特に去年と変わりないようでした。ただ負荷をかけるのは良くないようなので、運動も有酸素運動だけにしたほうがよいとのこと。

変な話なのですが、できないことが増えると綺麗サッパリ諦められて清々しいことがあります。僕は体が細いのがコンプレックスだったので、少し筋肉増やしたいなと思っていたのですが、ジムでのトレーニングはやめた方が良いとのこと。病気のせい?で負荷をかけると鈍い痛みがあったので最近はやっていなかったのですが、別に細くたっていいかという気持ちになりました。

人は自分が病気だと知ると、一般的に「ショック」を受けて「悩み」、「受け入れる」という3つの段階を踏むのですが、「受け入れる」ことができないと4つめの状態「抑うつ」状態に移るとされています。現実逃避したり、ネットで悲観的な情報を探して鬱ぎ込む段階です。

流蝋骨症は非常に珍しい病気で、重篤な場合の情報ばかり集めて今年の春先は塞ぎこんでいました。そんなこと考えてると、パラリンピックで活躍されてる選手が本当にすごいんだなって考えさせられました。彼らは自分の障がいを受け入れて練習して活躍されてるんですよね。

ただ僕も転んでもタダでは起きぬというか、体の状態を診てくれるお医者さんに何人も知り合えたし、辛いときには友人が助けてくれて、無事「受け入れる」段階にまで進めました。あと日本語・英語の医学用語も覚えられたのもよかった。長期的に見るとこれらの経験が人生を豊かにしてくれるかもしれません。

ちなみに、僕の流蝋骨症は発症範囲は広いのですが症状が軽いようです。ただ体の使い方が自然と左腕をかばうようになっているので骨格が歪みやすく、定期的に整骨院で正してもらっています。ほとんどいないと思いますが、同じ症状の方がいればご連絡いただければ、大学病院の先生はご紹介できます。

iota を使った enum のデフォルト値

yaml からの読み込みですがライブラリが非常に便利なおかげで簡単に実装できました。

iota を使って enum 的なものを実装していたのですが、設定ファイルをデシリアライズした時に、値が入っていなかった時のためにデフォルト値を用意したかったので、明示的に blank を用意しました。公式ドキュメントにもその使い方が載っています:

github.com

iota は 0 から始まるので、 > 0 の条件で値が設定されているかどうかが判定できそうです。

type MyStatus int

const (
    _ MyStatus = iota // 0
    FAILED
    SUCCEEDED
)

map リテラルの最後の行

細かいのですが気になったので。 map の最後の行はカンマ、セミコロンを置くか、閉じ括弧を改行しなければよさそうです。

stackoverflow.com