如果这个工具帮到了你,可以请作者喝杯咖啡 ☕
查询Go运算符优先级与结合性,理清表达式求值顺序。
x.y主表达式左结合访问结构体字段、包成员或方法。主表达式优先级最高。
user.Namex[i]主表达式左结合访问数组、切片、字符串或 map 的元素。
items[i]x[i:j]主表达式左结合从数组、切片或字符串中取得半开区间。
name[1:4]x.(T)主表达式左结合从接口值中取出动态类型为 T 的值。
value.(string)f()主表达式左结合调用函数、方法或可调用表达式。
fmt.Println(name)+x一元运算右结合返回数值本身,通常用于强调符号。
+count-x一元运算右结合返回数值的相反数。
-delta!一元运算右结合对布尔值取反。
!ok^x一元运算右结合对整数逐位取反。
^mask*p一元运算右结合读取指针指向的值。
*ptr&x一元运算右结合取得变量、字段或可寻址值的指针。
&value<-ch一元运算右结合从 channel 接收一个值,可用于表达式。
value := <-ch*乘除位移左结合两个数值相乘。
width * height/乘除位移左结合左操作数除以右操作数;整数除法会截断小数部分。
total / count%乘除位移左结合返回整数除法的余数。
index % 2<<乘除位移左结合将整数按位左移指定数量。
1 << bit>>乘除位移左结合将整数按位右移指定数量。
flags >> 1&乘除位移左结合两个整数逐位执行与运算。
flags & enabled&^乘除位移左结合清除左操作数中右操作数为 1 的位。
flags &^ disabled+加减按位左结合数值相加;字符串相加时执行拼接。
first + last-加减按位左结合左操作数减去右操作数。
end - start|加减按位左结合两个整数逐位执行或运算。
flags | selected^加减按位左结合两个整数逐位执行异或运算。
flags ^ mask==比较运算左结合判断两个可比较值是否相等。
status == "ok"!=比较运算左结合判断两个可比较值是否不相等。
err != nil<比较运算左结合比较左操作数是否小于右操作数。
age < 18<=比较运算左结合比较左操作数是否小于或等于右操作数。
score <= 100>比较运算左结合比较左操作数是否大于右操作数。
price > limit>=比较运算左结合比较左操作数是否大于或等于右操作数。
count >= min&&逻辑运算左结合左侧为 false 时短路,不再计算右侧。
ok && ready||逻辑运算左结合左侧为 true 时短路,不再计算右侧。
cached || fallback=赋值语句右结合将右侧值赋给左侧变量。Go 的赋值是语句,不作为表达式参与运算。
count = 10:=赋值语句右结合声明并初始化局部变量。它是语句,不是表达式运算符。
name := "toolkk"+= -= *= /=赋值语句右结合把二元运算结果写回左侧变量;还包括 %=、<<=、>>=、&=、&^=、|=、^=。
total += price++ --其他语句无结合性Go 中自增和自减只能作为语句使用,不能嵌入表达式。
i++<-其他语句无结合性向 channel 发送值时是语句形式,不作为表达式求值。
ch <- value在编写Go表达式时,不确定运算符优先级可能导致逻辑错误。本工具根据Go语言规范,输入任一运算符即可快速查询其优先级级别与结合性方向,帮助开发者理清表达式求值顺序。
+、*、==、&&、<- 等,注意区分单字符与双字符运算符。*,输出优先级为 5,结合性为左结合;输入 ==,输出优先级为 3,结合性为左结合;输入 !,输出优先级为 5,结合性为右结合(一元运算符)。a = b = 3 会先将3赋给b,再赋给a。请确保输入的是Go语言合法运算符,非法字符将提示错误。本工具基于Go语言规范,运算符优先级固定,不受上下文影响。查询仅返回优先级与结合性信息,不执行表达式计算,保护您的代码隐私。
Go运算符优先级共分5级,从高到低依次为:一元运算符(^ ! - +)等优先级5;乘除取模5;加减字符串连接4;比较3;逻辑与&& 2;逻辑或|| 1。赋值运算符优先级最低。实际编码中建议使用括号明确优先级,提升可读性。