在下面的例子中,如果1000都是int(我认为是),为什么底部无法编译?
//works
time.Sleep(1000 * time.Millisecond)
//fails
var i = 1000
time.Sleep(i * time.Millisecond)
在下面的例子中,如果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)
}