2016-03-21 13 views

Odpowiedz

10

trzeba konwertować wartości do odpowiedniego typu:

import(
    "fmt" 
    "time" 
    "strconv" 
) 

func main() { 
    var m, _ = strconv.Atoi("01") 
    // Now convert m to type time.Month 
    fmt.Println(time.Date(2016, time.Month(m), 1, 0, 0, 0, 0, time.UTC)) 
} 

skonwertowaniu go do typu int, ale 2. parametr time.Date() jest typu time.Month więc to daje błąd, który cię nie używają poprawnego typu.

+0

W Go nie ma czegoś takiego jak "rzucanie". Jest to konwersja typu, rzucanie w sensie C jest mniej rygorystyczne. – nemo

1

W pierwszym przykładzie deklarujesz typ jako time.Month, nie jest to int, jest to time.Month. W drugim przykładzie typ to int. Jeśli miałbyś obsadzić obsadę, tak jak w tym przykładzie, to działałoby tak, jak oczekujesz; https://play.golang.org/p/drD_7KiJu4

Jeśli w pierwszym przykładzie wy oświadczył m jako int lub po prostu stosować operator := (implikowana typ byłoby int) i co można uzyskać ten sam błąd, jak w drugim przykładzie. Demonstracja tutaj; https://play.golang.org/p/iWc-2Mpsly

0

Kompilator Go tylko rzuca stałe na same typy. Zmienne muszą być wyraźnie rzutowane.

Powiązane problemy