【Go】运算符笔记
基本数学运算
Go 语言支持常见的 算术运算符,用于执行数学计算。
运算符 | 说明 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 取余 |
++ | 自增 |
-- | 自减 |
整数运算只能得到整数部分
package main
import (
"fmt"
"math"
)
func main() {
go_math()
}
func go_math() {
x, y := 8, 5
fmt.Printf("x = %d ,y = %d\n", x, y)
fmt.Println("x/y除法运算:", x/y) //整数运算只能得到整数部分
fmt.Println("float64(x)/float64(y)浮点运算:", float64(x)/float64(y))
fmt.Println("x%y取余运算:", x%y)
x++
y--
fmt.Println("x++自增运算:", x)
fmt.Println("y--自减运算:", y)
//除了上面的基本运算外,还有一个math库提供了许多数学函数和常量
fmt.Println("除了上面的基本运算外,还有一个math库提供了许多数学函数和常量")
fmt.Println("math.Pi=", math.Pi)
fmt.Println("math.Pow幂运算", math.Pow(5, 3))
fmt.Println("math.Abs取绝对值:", math.Abs(-100))
}
结果如下
x = 8 ,y = 5
x/y除法运算: 1
float64(x)/float64(y)浮点运算: 1.6
x%y取余运算: 3
x++自增运算: 9
y--自减运算: 4
除了上面的基本运算外,还有一个math库提供了许多数学函数和常量
math.Pi= 3.141592653589793
math.Pow幂运算 125
math.Abs取绝对值: 100
关系运算符
Go 语言中的 关系运算符 用于比较两个值,返回 true
或 false
。
不能使用类似 5 < x < 15
的语法,需要拆分为 5 < x && x < 15
。
运算符 | 说明 | 示例(x=10 ) | 结果 |
---|---|---|---|
< | 小于 | x < 5 | false |
> | 大于 | x > 5 | true |
<= | 小于等于 | x <= 10 | true |
>= | 大于等于 | x >= 15 | false |
== | 等于 | x == 10 | true |
!= | 不等于 | x != 10 | false |
逻辑运算符
用于 多个条件组合判断,支持 短路求值。
运算符 | 说明 | 示例(x=10, y=5 ) | 结果 |
---|---|---|---|
&& | 逻辑与(AND) | x > 5 && y > 0 | true |
|| | 逻辑或(OR) | x < 5 || y > 0 | true |
! | 逻辑非(NOT) | !(x > 5) | false |
短路求值机制:
&&
(与):如果左侧为false
,右侧表达式不会执行。||
(或):如果左侧为true
,右侧表达式不会执行。
if 5 > x && 15 > x { // 这里 x=10,5 > 10 为 false,短路后续判断
fmt.Println(x)
}
位运算符
位运算符作用于整数的 二进制表示。
运算符 | 说明 | 示例(5=0101 , 6=0110 ) | 结果 |
---|---|---|---|
& | 按位与 | 5 & 6 (0101 & 0110) | 0100 (4) |
| | 按位或 | 5 | 6 (0101 | 0110) | 0111 (7) |
^ | 按位异或 | 5 ^ 6 (0101 ^ 0110) | 0011 (3) |
<< | 左移 | 5 << 2 (0101 -> 10100) | 20 |
>> | 右移 | 5 >> 2 (0101 -> 0001) | 1 |
fmt.Println(5 | 6) // 7
fmt.Println(5 & 6) // 4
fmt.Println(5 ^ 6) // 3
fmt.Println(5 << 2) // 20
fmt.Println(5 >> 2) // 1
赋值运算符
赋值运算符用于给变量赋值或进行 复合运算。
运算符 | 说明 | 示例 |
---|---|---|
= | 赋值 | x = 10 |
+= | 加后赋值 | x += 5 (等同于 x = x + 5 ) |
-= | 减后赋值 | x -= 3 (等同于 x = x - 3 ) |
*= | 乘后赋值 | x *= 2 (等同于 x = x * 2 ) |
/= | 除后赋值 | x /= 2 (等同于 x = x / 2 ) |
其他运算符
运算符 | 说明 |
---|---|
& | 取地址 |
* | 指针解引用 |
<- | 通道通信符号 |
var a int = 10
var p *int = &a // 取 a 的地址
fmt.Println(*p) // 输出 10(解引用)