2013-05-22 27 views
17

私はGO言語が新しく、今は少し問題に直面しています。 TimeのSecond()、Year()などを呼び出すと、整数が返されますが、Month()を呼び出すとMonth型の変数が返されます。Go to int in

オンラインドキュメントから、私は

type Month int 
... 
func (m Month) String() string 

を見ましたが、私はかなりそれを理解していません。 mがintではないため、my codeに次のエラーがあります。 月からintを取得するにはどうすればよいですか?

無効な操作:m/time.Month(10) + offsetは(不一致の種類time.Monthとint型)

答えて

32

考慮:

var m time.Month 

m ':サイドノートで

var i int = int(m) // normally written as 'i := int(m)' 

:それはconvertedintとすることができるように複数種類根底タイプは、intある質問は、分割を示します' m/time.Month(10) '。 dekamonth値を計算しない限り、バグかもしれません。

+0

ThX、私が書いたコードはバイト(m/10 +オフセット)ですが、ツールはスマートにm/time.Month(10)をエラーログに表示します。 – Nick

8

あなたが明示的にint型に変換する必要があります。

var m Month = ... 
var i int = int(m) 

行く遊び場にこのminimal exampleをチェックしてください。

+0

実際に変換されており、型キャストではありません。 –

+0

@DominikHonnefあなたはそうです=)。私は私の答えを更新しました。 – Brainstorm