time.Millisecond * int confusion

Operators

Operators combine operands into expressions.

Comparisons are discussed elsewhere. For other binary operators, the
operand types must be identical unless the operation involves shifts
or untyped constants. For operations involving constants only, see the
section on constant expressions.

Except for shift operations, if one operand is an untyped constant and
the other operand is not, the constant is converted to the type of the
other operand.

For example, using the “*” (multiplication) operator,

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

Possible solution:
Convert i to time.Duration (which underneath is an int64). (as suggested by @lcapra)

var i = 1000
time.Sleep(time.Duration(i) * time.Millisecond)

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)