Ответ 1
Операторы объединяют операнды в выражения.
Сравнения обсуждаются в другом месте. Для других двоичных операторов типы операндов должны быть идентичны, если операция не включает сдвиги или нетипизированные константы. Только для операций с константами см. раздел о постоянных выражениях.
За исключением операций сдвига, если один операнд является нетипизированной константой и другой операнд не является, константа преобразуется в тип другой операнд.
Например, используя оператор "*
" (умножение),
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)
}