1 Golang运算符概述
在Go语言中,运算符用于执行程序代码运算,包括算术运算、关系比较、逻辑运算等。不同的运算符对应不同的功能和使用场景。理解和熟练掌握这些运算符是进行有效编程的基础。
2 算术运算符
Go语言提供了一组用于算术运算的运算符:
- 加(+):加法运算
- 减(-):减法运算
- 乘(*):乘法运算
- 除(/):除法运算
- 余数(%):取模运算
示例:
package main
import "fmt"
func main() {
// 加法运算
sum := 10 + 5
fmt.Println("10 + 5 =", sum) // 输出 15
// 减法运算
diff := 10 - 5
fmt.Println("10 - 5 =", diff) // 输出 5
// 乘法运算
prod := 10 * 5
fmt.Println("10 * 5 =", prod) // 输出 50
// 除法运算
quot := 10 / 5
fmt.Println("10 / 5 =", quot) // 输出 2
// 余数运算
rem := 10 % 5
fmt.Println("10 % 5 =", rem) // 输出
}
3 逻辑运算符
逻辑运算符在Go语言中用于连接多个条件(一般用于布尔值)。它包括与(&&)、或(||)和非(!)三种。
3.1 与(&&)
当所有条件同时为 true
时,"与"运算的结果才为 true
。
示例:
package main
import "fmt"
func main() {
fmt.Println(true && true) // 输出 true
fmt.Println(true && false) // 输出 false
fmt.Println(false && false) // 输出 false
// 只有两个条件都为真,结果才是真
}
3.2 或(||)
只要有一个条件为 true
,"或"运算的结果就为 true
。
示例:
package main
import "fmt"
func main() {
fmt.Println(true || true) // 输出 true
fmt.Println(true || false) // 输出 true
fmt.Println(false || false) // 输出 false
// 只要有一个条件为真,结果就是真
}
3.3 非(!)
用于反转条件的布尔值。
示例:
package main
import "fmt"
func main() {
fmt.Println(!true) // 输出 false
fmt.Println(!false) // 输出 true
// 反转布尔值
}
4 比较运算符
比较运算符在Go语言中用于比较两个变量或值:
- 等于(==)
- 不等于(!=)
- 大于(>)
- 小于(<)
- 大于等于(>=)
- 小于等于(<=)
比较运算的结果是布尔值:true
或 false
。
5 位运算符
在Go中,位运算符允许我们直接操作数据的二进制位:
- 位与(&)
- 位或(|)
- 位异或(^)
- 位左移(<<)
- 位右移(>>)
位运算符主要用于低级编程,如直接硬件操作、加密等场景。
6 赋值运算符
赋值运算符用于给变量分配值。在Go语言中,赋值运算符有多种形式:
- 简单赋值(=)
- 加等(+=)
- 减等(-=)
- 乘等(*=)
- 除等(/=)
- 余等(%=)
这些运算符使得编码更加简洁,例如,x += 1
等价于 x = x + 1
。
7 特殊运算符
7.1 递增(++)和递减(--)
递增运算符(++)和递减运算符(--)分别用于将变量的值加1和减1。它们是Go语言中唯一可以作用于变量本身的运算符(不能作用于表达式)。
示例:
package main
import "fmt"
func main() {
x := 1
x++
fmt.Println("x++ =", x) // 输出 2
y := 10
y--
fmt.Println("y-- =", y) // 输出 9
}
注意在Go语言中,x++
或 x--
不能作为表达式的一部分。例如,不允许 z := x++
。
7.2 类型转换
Go语言是静态类型的语言,意味着变量一经声明,其类型就不能改变。因此,有时需要将一个类型的变量转换成另一个类型。Go没有自动类型转换,需要显式进行类型转换。
示例:
package main
import (
"fmt"
)
func main() {
var i int = 42
fmt.Println(float64(i)) // 将 int 转换成 float64
var f float64 = 3.14
fmt.Println(int(f)) // 将 float64 转换为 int,将丢失小数部分
}
在做类型转换时必须小心,确保转换过程中数据是安全的,比如在将浮点数转换为整数时可能会丢失精度。