登录
首页 >  Golang >  Go问答

time.Millisecond * int 混淆

来源:Golang技术栈

时间:2023-04-16 16:34:57 143浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《time.Millisecond * int 混淆》,以下内容将会涉及到golang,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

在下面的示例中,如果 1000 都是 int 的(我认为它们是),为什么底部无法编译?

//works
time.Sleep(1000 * time.Millisecond)

//fails
var i = 1000
time.Sleep(i * time.Millisecond)

正确答案

运营商

运算符将操作数组合成表达式。

比较在别处讨论。对于其他二元运算符,操作数类型必须相同,除非该操作涉及移位或无类型常量。对于仅涉及常量的操作,请参见常量表达式部分。

除移位操作外,如果一个操作数是无类型常量而另一个操作数不是,则该常量将转换为另一个操作数的类型。

例如,使用“ *”(乘法)运算符,

package main

import (
    "time"
)

func main() {

    // works - 1000 is an untyped constant
    // which is converted to type time.Duration
    time.Sleep(1000 * time.Millisecond)

    // fails - v is a variable of type int
    // which is not identical to type time.Duration
    var v = 1000
    // invalid operation: i * time.Millisecond (mismatched types int and time.Duration)
    time.Sleep(v * time.Millisecond)
}

终于介绍完啦!小伙伴们,这篇关于《time.Millisecond * int 混淆》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表