为了账号安全,请及时绑定邮箱和手机立即绑定

我不能在 golang 中使用变量进行时间计算吗?

我不能在 golang 中使用变量进行时间计算吗?

Go
慕丝7291255 2022-01-04 13:33:03
我正在尝试计算 10 分钟前的时间。为什么我不能用变量进行这个计算(可用于 for 循环)。看 -package mainimport (    "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
查看完整描述

2 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

就像错误所说的那样,您的类型不匹配。将整数结果转换为 a time.Duration

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


查看完整回答
反对 回复 2022-01-04
?
狐的传说

TA贡献1804条经验 获得超3个赞

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)

}


查看完整回答
反对 回复 2022-01-04
  • 2 回答
  • 0 关注
  • 144 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号