十干十二支を数え上げるパッケージを作ってみた
夏の終りの土用の丑の日に
という記事を Zenn に上げたが,調子に乗って Go パッケージ化してみた。
これを使って,たとえば
// +build run
package main
import (
"flag"
"fmt"
"os"
"time"
"github.com/spiegel-im-spiegel/jzodiac"
)
func main() {
flag.Parse()
args := flag.Args()
if len(args) < 1 {
fmt.Fprintln(os.Stderr, os.ErrInvalid)
return
}
for _, s := range args {
t, err := time.Parse("2006-01-02", s)
if err != nil {
fmt.Fprintln(os.Stderr, err)
continue
}
kan, shi := jzodiac.ZodiacYearNumber(t.Year())
fmt.Printf("Year %v is %v%v\n", t.Year(), kan, shi)
kan, shi = jzodiac.ZodiacDayNumber(t)
fmt.Printf("Day %v is %v%v\n", t.Format("2006-01-02"), kan, shi)
}
}
というコードを組めば
$ go run sample.go 2021-07-28
Year 2021 is 辛丑
Day 2021-07-28 is 丁丑
という感じに年と日の干支を取得できる。 ちなみに月の干支は旧暦と連動しているので,今回は実装していない。
検算には,若い頃に買った『新こよみ便利帳』に載っていた表を使った。 何でも取っておくものである(笑)
参考図書
- プログラミング言語Go
- アラン・ドノバン (著), ブライアン・カーニハン (著), 柴田芳樹 (著)
- 丸善出版 2016-06-20 (Release 2021-07-13)
- Kindle版
- B099928SJD (ASIN)
- 評価
Kindle 版出た! 一部内容が古びてしまったが,この本は Go 言語の教科書と言ってもいいだろう。感想はこちら。
- 新こよみ便利帳―天文現象・暦計算のすべて
- 暦計算研究会 (編集)
- 恒星社厚生閣 1991-05-01
- 単行本
- 4769907001 (ASIN), 9784769907008 (EAN), 4769907001 (ISBN)
- 評価
今となっては古い内容だが,暦や天体位置の一覧表が載っていて当時はそれなりに役に立った。