运算符
算术运算符
Go语言中的算术运算符包括加、减、乘、除和取模等。需要注意的是,除法运算符/和取模运算符%只能用于整数类型,而不能用于浮点数类型。如果要进行浮点数除法,需要使用类型转换或浮点数常量。另外,Go语言中的自增自减运算符只能用于语句中,不能用于表达式中。
用于进行基本的算术运算,包括加法、减法、乘法、除法、取模等。常用的算术运算符如下:
运算符 | 描述 |
---|---|
| 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 取模/取余数 |
代码案例:
代码语言:javascript复制package main
import "fmt"
func main() {
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语言中的关系运算符包括等于、不等于、大于、小于、大于等于和小于等于等。需要注意的是,比较运算符只能用于可比较的类型,例如整数、浮点数、字符串、指针等。而结构体、数组、函数等复杂类型则需要自定义比较函数或使用反射机制进行比较。
运算符 | 描述 |
---|---|
== | 检查两个值是否相等 |
!= | 检查两个值是否不相等 |
> | 检查左边的值是否大于右边的值 |
< | 检查左边的值是否小于右边的值 |
>= | 检查左边的值是否大于等于右边的值 |
<= | 检查左边的值是否小于等于右边的值 |
代码案例:
代码语言:javascript复制package main
import "fmt"
func main() {
a := 10
b := 3
// 等于
fmt.Println(a == b) // false
// 不等于
fmt.Println(a != b) // true
// 大于
fmt.Println(a > b) // true
// 小于
fmt.Println(a < b) // false
// 大于等于
fmt.Println(a >= b) // true
// 小于等于
fmt.Println(a <= b) // false
}
逻辑运算符
Go语言中的逻辑运算符包括与、或、非等。需要注意的是,与运算符&&和或运算符||具有短路特性,即只要能确定整个表达式的值就会停止计算。而非运算符!只能用于布尔类型,而不能用于整数类型。
运算符 | 描述 |
---|---|
&& | 逻辑 AND 运算符。如果两个操作数都是 true,则条件为 true,否则为 false |
|| | 逻辑 OR 运算符。如果两个操作数中有任意一个操作数为 true,则条件为 true,否则为 false |
! | 逻辑 NOT 运算符。用于反转操作数的逻辑状态。如果条件为 true,则逻辑 NOT 运算符会将其变为 false |
代码案例:
代码语言:javascript复制package main
import "fmt"
func main() {
a := true
b := false
// 逻辑与
fmt.Println(a && b) // false
// 逻辑或
fmt.Println(a || b) // true
// 逻辑非
fmt.Println(!a) // false
}
位运算符
Go语言中的位运算符包括按位与、按位或、按位异或、按位左移和按位右移等。需要注意的是,位运算符只能用于整数类型,而不能用于浮点数类型。另外,位运算符的优先级比算术运算符和比较运算符低,需要使用括号来控制优先级。
运算符 | 描述 |
---|---|
& | 按位与运算符。对两个操作数的每个二进制位执行逻辑 AND 操作 |
| | 按位或运算符。对两个操作数的每个二进制位执行逻辑 OR 操作 |
^ | 按位异或运算符。对两个操作数的每个二进制位执行逻辑 XOR 操作 |
<< | 左移运算符。将左操作数的所有位向左移动指定的位数 |
>> | 右移运算符。将左操作数的所有位向右移动指定的位数 |
代码案例:
代码语言:javascript复制package main
import "fmt"
func main() {
a := 60
b := 13
// 按位与
fmt.Println(a & b) // 12
// 按位或
fmt.Println(a | b) // 61
// 按位异或
fmt.Println(a ^ b) // 49
// 左移
fmt.Println(a << 2) // 240
// 右移
fmt.Println(a >> 2) // 15
}
赋值运算符
Go语言中的赋值运算符包括简单赋值、加等于、减等于、乘等于、除等于、模等于、与等于、或等于、异或等于等。需要注意的是,赋值运算符可以同时使用于多个变量,例如a, b := 1, 2。另外,赋值运算符的优先级比大部分运算符都低,但比逻辑运算符高。
运算符 | 描述 |
---|---|
= | 简单赋值运算符。将右边表达式的值赋给左边的变量 |
= | 加等于运算符。将右边表达式的值加到左边的变量上 |
-= | 减等于运算符。将右边表达式的值从左边的变量中减去 |
*= | 乘等于运算符。将右边表达式的值乘到左边的变量上 |
/= | 除等于运算符。将左边变量的值除以右边表达式的值 |
%= | 模等于运算符。将左边变量的值对右边表达式的值取模 |
代码案例:
代码语言:javascript复制package main
import "fmt"
func main() {
a := 10
b := 3
// 简单赋值
c := a
fmt.Println(c) // 10
// 加法赋值
a = b
fmt.Println(a) // 13
// 减法赋值
a -= b
fmt.Println(a) // 10
// 乘法赋值
a *= b
fmt.Println(a) // 30
// 除法赋值
a /= b
fmt.Println(a) // 10 / 3 = 3
// 取余赋值
a %= b
fmt.Println(a) // 1
}
其他运算符
Go语言中还有一些其他的运算符,例如取地址运算符&、指针运算符*、sizeof运算符等。需要注意的是,取地址运算符和指针运算符只能用于指针类型,而sizeof运算符只能用于静态类型。