go的大多数运算符在大多数其它编程语言中都有。需要关注的二元运算符涉及到的两个操作数必须一样。
下面是一些例子:
package main
import "fmt"
func main() {
var a, b uint8 = 255, 1
var c = a + b // a和b都是uint8,go编译器推断c也是uint8类型
fmt.Println(c)
var d = a << b // a和b都是uint8,go编译器推断d也是uint8类型
fmt.Println(d, uint16(a)<<b) // 强制转换a为uint15,那么整体的运算结果的数据类型是uint16
var x = 1.2 + 3/2
}
在python中,支持取消了令人感到不舒服的C/C++中的++和–运算符;而在go语言中,它们不在是运算符,而是表达式,并且只有后置的形式。因此下面这样的代码是错误的。
var a = 0
var b = a++ // 错误,++是表达式,它没有值。我们只能将它放在单独的一行。
a++ // 正确,++是表达式。
记住,–和++是表达式,不是运算符,并且只能出现后置。++是自增,–是自减
除了移位运算,对于一个二元算术运算,
https://gfw.go101.org/article/operators.html