下面的代码:
package main
import "fmt"
func main() {
fmt.Println("a"[0] + 'a') // 194
fmt.Println(byte(97) + rune(97)) // 报错:invalid operation: byte(97) + rune(97) (mismatched types byte and rune)
}
第一个打印正常,但是第二个报错,为什么呢?
"a"[0] 是 byte 类型,而 'a' 是 rune 类型。
有疑问加站长微信联系(非本文作者)

第一个
'a'
相当于const
常量,编译时直接计算。而第二行则是运行时计算,类型都不一样当然报错。你看下图第二种情况,也一样报错。你得了解一下go里面const
的规范,特别是你的第一种情况是个无类型的const
,没有类型当然可以和其他类型结合了。私认为没那多弯弯绕绕的道理,就是因为:虽然是数字类型, Go 也只允许相同的类型才能运算,byte 底层是 uint8,rune 底层是 int32
感谢指点,刚开始学 go,啥也不懂哈哈哈