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