2016-04-13 28 views
0

10 dakika önce saati hesaplamaya çalışıyorum. Bu hesaplamayı neden değişkenlerle yapamıyorum (for döngüsü için kullanılabilir). bakın -Golang'da zaman hesaplamaları için değişkenler kullanamıyorum?

package main 

import (
    "fmt" 
    "time" 
) 

func main() { 

    // the time now 
    fmt.Println(time.Now()) 

    // the time 50 minutes ago - WORKS 
    diff := (60 - 10) * time.Minute 
    newTime := time.Now().Add(-diff) 
    fmt.Println(newTime) 

    // the time 50 minutes ago - DOESN'T WORKS! 
    i := 10 
    diff = (60 - i) * time.Minute 
    newTime = time.Now().Add(-diff) 
    fmt.Println(newTime) 
} 

Neden diff = (60 - i) * time.Minute çalışmıyor? Bu alıyorum hatadır - Go Oyun için

prog.go:20: invalid operation: (60 - i) * time.Minute (mismatched types int and time.Duration) 

: https://play.golang.org/p/TJ03K0ULg2

Çok teşekkürler!

cevap

5

Hatada olduğu gibi, yanlış eşleşmiş türleriniz var. Bir time.Duration için sayı sonucunu dönüştürme: istediğini yapmak için değişkeni kullanmak istiyorsanız, sadece bu gibi time.Duration değişkeni bildirmek böylece

aslında
diff = time.Duration(60-i) * time.Minute 
0

time.Duration, int64 yazın edilir:

package main 

import (
    "fmt" 
    "time" 
) 

func main() { 

    // the time now 
    fmt.Println(time.Now()) 

    // the time 50 minutes ago - WORKS 
    diff := (60 - 10) * time.Minute 
    newTime := time.Now().Add(-diff) 
    fmt.Println(newTime) 

    // the time 50 minutes ago - DOESN'T WORKS! 
    var i time.Duration 
    diff = (60 - i) * time.Minute 
    newTime = time.Now().Add(-diff) 
    fmt.Println(newTime) 
}