2013-05-22 12 views
17

Jestem nowy w języku GO i teraz mam do czynienia z małym problemem. Po wywołaniu sekund drugiego(), roku() itp. Dali mi liczbę całkowitą, ale kiedy zadzwonię do Miesiąc(), dostałem zmienną typu Miesiąc.Miesiąc na int in Go

Z dokumentu internetowego, widziałem

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

ale ja nie bardzo rozumiem. mój kod zawiera następujący błąd, ponieważ m nie jest int. Jak powinienem otrzymać int od miesiąca?

nieprawidłowe działanie: m/time.Month(10) + offset (niedopasowane rodzaje time.Month i INT)

Odpowiedz

32

Biorąc pod uwagę:

var m time.Month 

m 's typ bazowego typ jest int, więc może to być converted do int:

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

Na marginesie: Pytanie przedstawia podział' m/time.Month(10) ". Może to być błąd, chyba że chcesz obliczyć wartość dekamonth wartości ;-)

+0

ThX, kod, który napisałem, to bajt (m/10 + offset), ale narzędzie "elegancko" wyświetla m/time.Month (10) w dzienniku błędów. – Nick

8

Trzeba jawnie przekonwertować go do int:

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

Sprawdź to minimal example w odchodzeniu zabaw.

+0

To naprawdę konwersja, a nie rzutowanie typu. –

+0

@DominikHonnef Masz rację =). Zaktualizowałem swoją odpowiedź. – Brainstorm