Goでは月を取得するとint型ではなく、Marchみたいな値が出力される。
JavaScriptでは月を取得すると、number型(Goでいうint型)になるので少し驚いたのでメモ。
(しかも、JSは0から始まるから厄介...)
そのまま月(Month)を取得しようとすると
package main
import (
"fmt"
"time"
)
func main() {
t := time.Now()
month := t.Month()
fmt.Printf("type=%T value=%v\n", month, month)
}
結果
type=time.Month value=March
結果として、time.Month型という型のMarchが返される。
月(Month)をint型にするには
これをint型で扱うにはどうすれば良いか?
今回の例の場合はMarchを3と扱うにはどうすれば良いか?
これは簡単で、time.Now().Month()をint()で「time.Month型 => int型」に型変換してあげればOK!
package main
import (
"fmt"
"time"
)
func main() {
t := time.Now()
month := t.Month()
// 型変換でint型へ
monthToInt := int(month)
fmt.Printf("type=%T value=%v\n", monthToInt, monthToInt)
}
結果
type=int value=3
これでMarchではなく3というint型で扱える。
以上。