运算符与表达式 -《Go语言实战指南》

简介: 本章全面介绍Go语言中的运算符及其使用方法。内容涵盖算术、赋值、比较、逻辑、位运算符等类型,结合示例解析其功能与应用场景。此外,还详细说明了运算符的优先级与结合性规则,并强调通过括号提升代码可读性。最后指出Go不支持运算符重载,位运算适用于性能优化场景,帮助开发者高效掌握表达式构建技巧。

 

Go 语言提供了一整套简洁且强大的运算符,用于数值计算、逻辑判断、赋值操作等。本章将带你系统了解 Go 中各类运算符及其组合表达式的使用方法。


一、运算符分类总览

运算符类型 示例 说明
算术运算符 + - * / % 加减乘除取余
赋值运算符 = += -= *= /= %= 基础赋值与复合赋值
比较运算符 == != > < >= <= 常用于条件判断
逻辑运算符 `&& !` 与、或、非(布尔运算)
位运算符 `& ^ &^ << >>` 位与、或、异或、位清零等
其他运算符 &* <- <-chan 指针、通道等相关运算符

二、算术运算符

a := 10
b := 3
fmt.Println(a + b) // 13
fmt.Println(a - b) // 7
fmt.Println(a * b) // 30
fmt.Println(a / b) // 3 (整数除法)
fmt.Println(a % b) // 1

注意:整数除法会自动舍去小数部分,使用浮点数可保留精度。


三、赋值运算符

Go 支持基础赋值和复合赋值:

x := 5
x += 3 // 等价于 x = x + 3
x *= 2 // 等价于 x = x * 2

可用运算符包括:+= -= *= /= %=


四、比较运算符

a := 5
b := 10
fmt.Println(a == b) // false
fmt.Println(a != b) // true
fmt.Println(a < b)  // true
fmt.Println(a >= b) // false
  • • 用于数值、布尔值、字符串、数组等的比较;
  • • 不支持对 map、slice、function 进行直接比较。

五、逻辑运算符(布尔逻辑)

x := true
y := false
fmt.Println(x && y) // false
fmt.Println(x || y) // true
fmt.Println(!x)     // false
  • &&:逻辑与,两个都为真才为真;
  • ||:逻辑或,任一为真即为真;
  • !:逻辑非,取反。

六、位运算符(适用于整数类型)

a := 5  // 0101
b := 3  // 0011
fmt.Println(a & b)  // 1 (0001)
fmt.Println(a | b)  // 7 (0111)
fmt.Println(a ^ b)  // 6 (0110)
fmt.Println(a &^ b) // 4 (0100) 清除 b 中为 1 的位
fmt.Println(a << 1) // 10(左移)
fmt.Println(a >> 1) // 2 (右移)

七、自增与自减(Go 1.14 起不可作为表达式)

i := 0
i++ // 等价于 i = i + 1
i-- // 等价于 i = i - 1

注意:Go 中 i++ 不能写在赋值语句或表达式中,如 j := i++ 是非法的。


八、优先级与结合性

优先级(从高到低) 运算符
1 * / % << >> & &^
2 `+ - ^`
3 == != < <= > >=
4 &&
5 ` `
6 赋值运算符(如 = += -=

建议使用括号明确优先级,提升可读性。


九、表达式的使用场景

// 条件判断
if x > 0 && x < 100 {
    fmt.Println("x 在区间 (0,100) 内")
}
// 赋值表达式
a := 3
a *= 2 + 1 // 等价于 a = a * (2 + 1)

十、小结

  • • 运算符是表达式的基本构建单元,需熟练掌握;
  • • Go 不支持运算符重载;
  • • 使用括号提高表达式清晰度;
  • • 位运算适用于性能敏感或底层编程场景。

 

相关文章
|
12月前
|
Go
Go语言数学运算大揭秘:高精度计算实战
Go语言数学运算大揭秘:高精度计算实战
164 0
|
1天前
|
Go 开发者
条件语句:if 与 switch -《Go语言实战指南》
本文介绍了 Go 语言中两种主要的条件语句:`if` 和 `switch`。`if` 语句包括基本语法、带 `else` 的写法、多分支 `else if` 以及支持初始化语句的功能。`switch` 语句则涵盖基本用法、匹配多个值、逻辑判断和 `fallthrough` 的使用。文章还提供了选择建议,帮助开发者根据场景决定使用哪种语句。总结指出,`if` 更灵活适合少量条件,而 `switch` 结构化更强,适合多分支判断。
|
4天前
|
Go 容器
Go语言变量与常量 -《Go语言实战指南》
本章详细介绍了Go语言中变量与常量的基础知识。变量支持多种声明方式,包括标准声明、类型推导和短变量声明等,未初始化的变量会自动赋零值。常量在声明时必须赋值,且运行时不可更改,支持使用`iota`实现枚举。两者的主要区别在于变量可变而常量不可变,变量有零值而常量必须初始化。此外,还强调了`:=`的使用限制及代码整洁性要求,并通过实践示例巩固理解。掌握这些内容是学好Go语言的关键基础。
|
9月前
|
存储 缓存 Java
涨姿势啦!Go语言中正则表达式初始化的最佳实践
在Go语言中,正则表达式是处理字符串的强大工具,但其编译过程可能消耗较多性能。本文探讨了正则表达式编译的性能影响因素,包括解析、状态机构建及优化等步骤,并通过示例展示了编译的时间成本。为了优化性能,推荐使用预编译策略,如在包级别初始化正则表达式对象或通过`init`函数进行错误处理。此外,简化正则表达式和分段处理也是有效手段。根据初始化的复杂程度和错误处理需求,开发者可以选择最适合的方法,以提升程序效率与可维护性。
98 0
涨姿势啦!Go语言中正则表达式初始化的最佳实践
|
12月前
|
算法 Java
Java程序设计基础——位运算符简介
Java程序设计基础——位运算符简介
|
12月前
|
Java Go 区块链
【Go语言专栏】Go语言中的运算符和表达式
【4月更文挑战第30天】Go语言是Google开发的编程语言,因其简单易学、高性能和出色的并发处理能力而备受关注,常用于云计算、微服务等领域。本文介绍了Go语言中的运算符和表达式,包括算术运算符(如加、减、乘、除、取模)、关系运算符(如等于、不等于、大于、小于等)、逻辑运算符(如逻辑与、或、非)以及位运算符(如按位与、或、异或、移位)。通过示例代码展示了这些运算符的使用方法。
95 1
|
12月前
|
供应链 Serverless Go
掌握Go语言:精通Go语言运算符,解锁编程新境界(11)
掌握Go语言:精通Go语言运算符,解锁编程新境界(11)
|
安全 Go
一文吃透Go语言整型用法 新手必备指南!
一文吃透Go语言整型用法 新手必备指南!
103 0
|
存储 Go
Go语言数据类型转换指南 不看后悔系列
Go语言数据类型转换指南 不看后悔系列
79 0
|
Go
高阶函数编程:探索Go语言中的函数一等公民
Go 函数一等公民。你是否听说过 `Go` 语言中的函数是一等公民?如果没有,那么恭喜你,本文将带你一起揭开这个神秘的面纱。如果你已经了解这个概念,你是否知道为什么 `Go` 语言中的函数被称为一等公民?不管你的答案是什么,通过阅读本文,你将对这个概念有更深入的了解。
123 0
高阶函数编程:探索Go语言中的函数一等公民