Golang中的运算符

简介: Golang中的运算符

运算符

算术运算符


Go语言中的算术运算符包括加、减、乘、除和取模等。需要注意的是,除法运算符/和取模运算符%只能用于整数类型,而不能用于浮点数类型。如果要进行浮点数除法,需要使用类型转换或浮点数常量。另外,Go语言中的自增自减运算符只能用于语句中,不能用于表达式中。


用于进行基本的算术运算,包括加法、减法、乘法、除法、取模等。常用的算术运算符如下:

运算符 描述
+ 加法
- 减法
* 乘法
/ 除法
% 取模/取余数


代码案例:

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语言中的关系运算符包括等于、不等于、大于、小于、大于等于和小于等于等。需要注意的是,比较运算符只能用于可比较的类型,例如整数、浮点数、字符串、指针等。而结构体、数组、函数等复杂类型则需要自定义比较函数或使用反射机制进行比较。


运算符 描述
== 检查两个值是否相等
!= 检查两个值是否不相等
> 检查左边的值是否大于右边的值
< 检查左边的值是否小于右边的值
>= 检查左边的值是否大于等于右边的值
<= 检查左边的值是否小于等于右边的值


代码案例:

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


代码案例:

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 操作
<< 左移运算符。将左操作数的所有位向左移动指定的位数
>> 右移运算符。将左操作数的所有位向右移动指定的位数


代码案例:

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。另外,赋值运算符的优先级比大部分运算符都低,但比逻辑运算符高。


运算符 描述
= 简单赋值运算符。将右边表达式的值赋给左边的变量
+= 加等于运算符。将右边表达式的值加到左边的变量上
-= 减等于运算符。将右边表达式的值从左边的变量中减去
*= 乘等于运算符。将右边表达式的值乘到左边的变量上
/= 除等于运算符。将左边变量的值除以右边表达式的值
%= 模等于运算符。将左边变量的值对右边表达式的值取模


代码案例:

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运算符只能用于静态类型。


相关文章
|
6月前
|
Java Go C++
Golang每日一练(leetDay0096) 添加运算符、移动零
Golang每日一练(leetDay0096) 添加运算符、移动零
77 0
Golang每日一练(leetDay0096) 添加运算符、移动零
|
Go 开发者
100天精通Golang(基础入门篇)——第6天: 深入解析Go语言中的运算符
100天精通Golang(基础入门篇)——第6天: 深入解析Go语言中的运算符
94 0
|
Go
Golang运算符
Golang运算符
134 0
Golang运算符
|
Go
03-Golang-常量与运算符
常量的定义 常量的值在编译时就已经确定 常量的定义格式与变量基本相同 等号右侧必须是常量或者常量表达式 常量表达式中的函数必须是内置函数 常量的初始化规则与枚举 在定义常量组时,如果不提供初始值,则表示将使用上行的表达式 使用相同的表达式不代表具有相同的值 iota是常量的计数器,从0开始,...
838 0
|
2月前
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
116 4
Golang语言之管道channel快速入门篇
|
2月前
|
Go
Golang语言文件操作快速入门篇
这篇文章是关于Go语言文件操作快速入门的教程,涵盖了文件的读取、写入、复制操作以及使用标准库中的ioutil、bufio、os等包进行文件操作的详细案例。
67 4
Golang语言文件操作快速入门篇
|
2月前
|
Go
Golang语言之gRPC程序设计示例
这篇文章是关于Golang语言使用gRPC进行程序设计的详细教程,涵盖了RPC协议的介绍、gRPC环境的搭建、Protocol Buffers的使用、gRPC服务的编写和通信示例。
104 3
Golang语言之gRPC程序设计示例
|
2月前
|
安全 Go
Golang语言goroutine协程并发安全及锁机制
这篇文章是关于Go语言中多协程操作同一数据问题、互斥锁Mutex和读写互斥锁RWMutex的详细介绍及使用案例,涵盖了如何使用这些同步原语来解决并发访问共享资源时的数据安全问题。
86 4
|
2月前
|
Go
Golang语言错误处理机制
这篇文章是关于Golang语言错误处理机制的教程,介绍了使用defer结合recover捕获错误、基于errors.New自定义错误以及使用panic抛出自定义错误的方法。
49 3
|
2月前
|
Go 调度
Golang语言goroutine协程篇
这篇文章是关于Go语言goroutine协程的详细教程,涵盖了并发编程的常见术语、goroutine的创建和调度、使用sync.WaitGroup控制协程退出以及如何通过GOMAXPROCS设置程序并发时占用的CPU逻辑核心数。
52 4
Golang语言goroutine协程篇