工具用的顺手吗?
你的反馈能帮助我们做得更好
查询Go运算符优先级与结合性,理清表达式求值顺序。
此表是收录语法的参考子集,不执行或验证示例。数字是本站分组,不能替代所用语言版本的完整语法、类型和求值规则;例子保留原始代码与字面值。第8、9组的赋值、增减和通道发送是语句,不是表达式优先级。 参考来源
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 规范把二元运算符分为五档,数字越大,结合得越紧:
| 规范优先级 | 运算符 |
|---|---|
| 5,最高二元档 | * / % << >> & &^ |
| 4 | + - | ^ |
| 3 | == != < <= > >= |
| 2 | && |
| 1,最低二元档 | || |
一元运算符比表内二元运算符结合得更紧;同一档的二元运算符从左向右结合。比如 a + b * c 按 a + (b * c) 分组,而 u || v && w 按 u || (v && w) 分组。
有些符号会因位置不同而承担不同作用,例如 ^x 是一元按位取反,a ^ b 是二元按位异或;搜索同一个符号时,应结合分类和示例区分。Go 规范还用 x == y+1 && <-ch > 0 展示多个优先级如何共同决定分组;可改写成 ((x == (y + 1)) && ((<-ch) > 0)) 让层次更直观。
查询器可按符号、名称、说明、示例或级别关键词查找条目,也能用分类和结合性筛选。结果卡片包含条目名称、说明、示例,并提供复制符号或示例的操作,适合快速定位语法主题。页面还列出主表达式、一元形式、赋值语句和其他语句等扩展条目,供按语法主题进一步定位。
指南
按步骤完成操作,并通过示例核对输入与结果。
可以输入符号,例如 &^ 或 !=,也可以输入运算名称、说明中的关键词、示例片段或页面显示的级别数字。清空关键词可显示当前筛选范围内的所有条目。检索多字符符号时,输入完整写法如 << 或 <= 更容易缩小候选;只输入一个字符也可能匹配到名称和示例中的相关条目。
先按主表达式、一元运算、乘除位移、加减按位、比较、逻辑、赋值语句或其他语句缩小范围;需要时再限定左结合、右结合或无结合性。
打开匹配卡片查看符号名称、作用说明和示例。复制后放回自己的代码上下文中核对类型及语法;表达式较复杂时添加括号能让意图更清楚。候选较多时优先用分类筛选,再阅读完整说明和示例,不要只凭符号片段决定条目。
这里是查表与筛选工具,不会执行你输入的完整表达式,也不会替你判断变量类型、编译错误或运行结果。
场景
查看这项工具在不同工作与生活流程中的用法。
看到包含比较、逻辑与和算术的条件表达式时,先查对应符号,再按规范优先级逐层加括号说明执行分组。团队成员可以用同一示例讨论表达式是否清晰。
遇到移位、按位清除、通道接收或类型断言时,可按符号或名称搜索,查看说明与示例,再回到语言规范核对语法和使用上下文。
问答
集中解答高频疑问与容易混淆的问题。
a + b * c 会先算哪一部分?乘法档高于加法档,所以按 a + (b * c) 分组。加括号可以把这一分组直接写出来。
&& 和 || 哪个优先级更高?&& 高于 ||,因此 a || b && c 等价于 a || (b && c)。同一优先级的二元运算符则从左向右结合。例如 8 / 4 * 2 按 (8 / 4) * 2 分组,而不是先把后两个数乘在一起。遇到长条件表达式时,可以先按规范优先级拆分,再添加括号表达代码意图,减少读者依赖记忆的负担。
不会。它返回匹配的符号条目、分类、结合性和示例;类型是否合法、表达式能否编译及运行结果仍需在实际代码环境中确认。
须知
使用前了解适用范围、结果限制与必要提醒。
查询器为便于分组检索,也把主表达式、一元形式、赋值语句和其他语句纳入列表,因此页面显示的级别是该列表自己的排序标记,不应直接当作 Go 规范五档二元优先级的官方编号。尤其是 =、:=、++、-- 和通道发送属于语句用法,不是规范二元优先级表中的运算符。判断表达式分组时,以官方语言规范为准;遇到难读的组合,主动加括号并编译验证。
推荐
查找相关工具、专题与可用的 API 能力。