2016-04-13 3 views
0

私は10分前に時間を計算しようとしています。 変数を使ってこの計算を行うことができないのはなぜですか(forループで使用可能)。 を参照してください -golangで時間計算に変数を使用することはできませんか?

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) 
} 

diff = (60 - i) * time.Minuteが動作しないのはなぜ? これは私が取得していますエラーです -

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

行く遊び場の場合:https://play.golang.org/p/TJ03K0ULg2

どうもありがとう!

答えて

5

エラーのように、タイプが一致しません。 time.Durationに整数の結果を変換します

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

time.Durationは、実際にint64タイプですので、あなたが欲しいものを作るために変数を使用したい場合は、単にtime.Durationに変数を宣言し、このように:

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) 
} 
関連する問題