首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
本小册内容介绍
本小册内容综述
Go语言简介:历史背景、发展现状及语言特性
编写第一个Go程序
变量、常量以及与其他语言的差异
数据类型
运算符
条件和循环
数组和切片
Map声明、元素访问及遍历
Map与工厂模式,在Go语言中实现Set
字符串
Go语言的函数
可变参数和defer
行为的定义和实现
Go语言的相关接口
扩展与复用
不一样的接口类型,一样的多态
编写好的错误处理
panic和recover
构建可复用的模块(包)
依赖管理
协程机制
共享内存并发机制
CSP并发机制
多路选择和超时
channel的关闭和广播
任务的取消
Context与任务取消
只运行一次
仅需任意任务完成
所有任务完成
对象池
sync.pool对象缓存
单元测试
Benchmark
BDD
反射编程
万能程序
不安全编程
实现pipe-filter framework
实现micro-kernel framework
内置JSON解析
easyjson
HTTP服务
构建RESTful服务
性能分析工具
性能调优示例
别让性能被锁住
GC友好的代码
高效字符串连接
面向错误的设计
面向恢复的设计
Chaos Engineering
当前位置:
首页>>
技术小册>>
Go语言从入门到实战
小册名称:Go语言从入门到实战
### 运算符章节内容 #### 引言 在编程的世界中,运算符是构建程序逻辑不可或缺的基础工具。它们如同数学中的符号,用于执行数据的算术运算、比较、逻辑操作以及赋值等。对于学习Go语言(常简称为Golang)的开发者而言,掌握各种运算符的使用是通往高效编程的重要一步。本章将深入介绍Go语言中的运算符,包括算术运算符、比较运算符、逻辑运算符、位运算符、赋值运算符、复合赋值运算符以及特殊运算符,帮助读者从理论到实践全面理解并灵活运用这些工具。 #### 1. 算术运算符 算术运算符用于执行基本的数学运算,如加、减、乘、除等。Go语言支持以下算术运算符: - **加法 (`+`)**: 用于将两个数值相加。 - **减法 (`-`)**: 用于从一个数值中减去另一个数值。 - **乘法 (`*`)**: 用于将两个数值相乘。 - **除法 (`/`)**: 用于将第一个数值除以第二个数值,结果为浮点数(如果操作数中有浮点数)或整数(如果操作数均为整数且能整除)。 - **模运算符 (`%`)**: 也称为取余运算符,用于求两个数相除后的余数。 示例代码: ```go package main import "fmt" func main() { a := 10 b := 3 fmt.Println("a + b =", a+b) // 加法 fmt.Println("a - b =", a-b) // 减法 fmt.Println("a * b =", a*b) // 乘法 fmt.Println("a / b =", a/b) // 除法(整数除法) fmt.Println("a % b =", a%b) // 取余 } ``` #### 2. 比较运算符 比较运算符用于比较两个值的大小关系,返回布尔值(`true` 或 `false`)。Go语言中的比较运算符包括: - **等于 (`==`)**: 判断两边是否相等。 - **不等于 (`!=`)**: 判断两边是否不相等。 - **大于 (`>`)**: 判断左边是否大于右边。 - **小于 (`<`)**: 判断左边是否小于右边。 - **大于等于 (`>=`)**: 判断左边是否大于或等于右边。 - **小于等于 (`<=`)**: 判断左边是否小于或等于右边。 示例代码: ```go package main import "fmt" func main() { x := 5 y := 3 fmt.Println(x == y) // false fmt.Println(x != y) // true fmt.Println(x > y) // true fmt.Println(x < y) // false fmt.Println(x >= y) // true fmt.Println(x <= y) // false } ``` #### 3. 逻辑运算符 逻辑运算符用于根据一个或多个条件的布尔值来执行逻辑操作。Go语言支持以下逻辑运算符: - **逻辑与 (`&&`)**: 仅当两边都为`true`时,结果为`true`。 - **逻辑或 (`||`)**: 当两边中至少有一个为`true`时,结果为`true`。 - **逻辑非 (`!`)**: 对布尔值取反,`true`变为`false`,`false`变为`true`。 示例代码: ```go package main import "fmt" func main() { a := true b := false fmt.Println(a && b) // false fmt.Println(a || b) // true fmt.Println(!a) // false } ``` #### 4. 位运算符 位运算符用于对整数的二进制位进行操作。Go语言支持以下位运算符: - **位与 (`&`)**: 对两个数的每一位执行AND操作。 - **位或 (`|`)**: 对两个数的每一位执行OR操作。 - **位异或 (`^`)**: 对两个数的每一位执行XOR(异或)操作。 - **位取反 (`^` 单独使用时)**: 对数的每一位取反。 - **左移 (`<<`)**: 将数的二进制表示向左移动指定位数,右边超出的位被丢弃,左边超出的部分用0填充。 - **右移 (`>>`)**: 将数的二进制表示向右移动指定位数,对于无符号数,左边超出的部分用0填充;对于有符号数,行为可能依赖于具体的实现(通常是算术右移,即用符号位填充左边超出的部分)。 示例代码: ```go package main import "fmt" func main() { a := 60 // 二进制表示为 0011 1100 b := 13 // 二进制表示为 0000 1101 fmt.Println(a & b) // 12 (0000 1100) fmt.Println(a | b) // 61 (0011 1101) fmt.Println(a ^ b) // 49 (0011 0001) fmt.Println(^a) // -61 (二进制表示依赖于整数类型的大小和是否有符号,这里假设为32位有符号整数) fmt.Println(a << 2) // 240 (1111 0000) fmt.Println(a >> 2) // 15 (0000 1111) } ``` **注意**:位取反(`^` 单独使用时)的示例中,`-61`是基于假设整数为32位有符号整数的结果,实际输出可能因编译器和整数类型的不同而有所差异。 #### 5. 赋值运算符 赋值运算符用于将右侧的值赋给左侧的变量。Go语言中,最基本的赋值运算符是单个等号(`=`)。 示例代码: ```go package main import "fmt" func main() { var x int x = 10 fmt.Println(x) // 输出 10 } ``` #### 6. 复合赋值运算符 复合赋值运算符结合了算术或位运算符与赋值运算符的功能,使得代码更加简洁。例如,`+=` 是加法与赋值的复合,`&=` 是位与与赋值的复合等。 示例代码: ```go package main import "fmt" func main() { a := 5 a += 3 // 等同于 a = a + 3 fmt.Println(a) // 输出 8 b := 60 b &= 13 // 等同于 b = b & 13 fmt.Println(b) // 输出 12 } ``` #### 7. 特殊运算符 除了上述几类运算符外,Go语言还包含一些特殊运算符,如指针运算符(`*`和`&`,但在此上下文中它们用于地址和间接引用,不同于算术和位运算符中的用法)、通道运算符(`<-`,用于从通道接收值或向通道发送值)等,这些运算符在特定场景下发挥重要作用,但通常不被归类为传统意义上的运算符。 #### 结语 通过本章的学习,我们全面了解了Go语言中的各类运算符,包括算术、比较、逻辑、位、赋值以及复合赋值运算符。这些运算符是构建程序逻辑的基础,掌握它们对于提高编程效率和编写高质量代码至关重要。希望读者能够通过实践加深对这些运算符的理解,并在实际编程中灵活运用。
上一篇:
数据类型
下一篇:
条件和循环
该分类下的相关小册推荐:
Golang修炼指南
深入浅出Go语言核心编程(三)
go编程权威指南(三)
深入浅出Go语言核心编程(二)
Go开发权威指南(下)
深入浅出Go语言核心编程(一)
Go-Web编程实战
WebRTC音视频开发实战
GO面试指南
Go Web编程(上)
Golang并发编程实战
深入浅出Go语言核心编程(六)