下面这段代码输出什么?

func main() {  
    a := 5
    b := 8.1
    fmt.Println(a + b)
}
  • A.13.1
  • B.13
  • C.compilation error

答 C 在线运行:https://go.dev/play/p/VDTgpXoukTb

在Go中,变量之间没有隐式类型转换。但是,编译器可以进行变量和常量之间的隐式类型转换

题目中 a为 int变量 b为 float64变量\

不同类型不能使用 + 运算符

常量之间的隐式类型转换

func main() {
    const a = 5
    const b = 8.1
    fmt.Println(a + b) // 13.1
}

在线运行 :https://go.dev/play/p/4KXch9jes-y

类型的优先级为: 整数(int)<符文数(rune)<浮点数(float)<复数(Imag)

func main() {
    a := 5
    const b = 8.1
    fmt.Println(a + b) // 报错
}

在线运行:https://go.dev/play/p/sIINDSsakdz 变量A int 变量b不能被推断为int

func main() {
    const a = 5
    b := 8.1
    fmt.Println(a + b) // 13.1
}

在线运行:https://go.dev/play/p/JNhNXc1OErN