一篇文章带你了解Go语言基础之运算符和流程控制
回复“Go语言”即可获赠Python从入门到进阶共10本电子书
上篇文章中我们学习了Go语言基础中的变量,一篇文章带你了解Go语言基础之变量,这篇文章我们继续介绍Go语言基础知识,今天跟大家分享的是基础数据类型之运算符和流程控制,一起来学习下吧~
前言
Hey,大家好呀,我是星期八,这次咱们继续学习Go基础之运算符和流程控制叭。
运算符
运算符这个名字听着玄乎,其实我们平常见的很多了,就像=
,+
,/
之类的。
运算符主要分为
算数运算符
关系运算符
逻辑运算符
位运算符
赋值运算符
下面就来简单了解以下叭。
算数运算符
算数运算符顾名思义,主要用在算数中,加减乘除了啥的
简单了解以下叭。
运算符 | 描述 |
---|---|
+ | 相加 |
- | 相减 |
* | 相乘 |
/ | 相除 |
% | 求余 |
++ | 自加 |
-- | 自减 |
关系运算符
运算符 | 描述 |
---|---|
== | 检查两个值是否相等,如果相等返回 True 否则返回 False |
!= | 检查两个值是否不相等,如果不相等返回 True 否则返回 False |
> | 检查左边值是否大于右边值,如果是返回 True 否则返回 False |
>= | 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False |
< | 检查左边值是否小于右边值,如果是返回 True 否则返回 False |
<= | 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False |
逻辑运算符
运算符 | 描述 |
---|---|
&& | 逻辑 and 运算符。 如果两边的操作数都是 True,则为 True,否则为 False |
|| | 逻辑 or 运算符。 如果两边的操作数有一个 True,则为 True,否则为 False |
! | 逻辑 NOT 运算符。 如果条件为 True,则为 False,否则为 True |
注:逻辑运算符是很重要的,开发中经常用到。
位运算符
位运算符有些底层,特殊情况会用到
运算符 | 描述 |
---|---|
& | 参与运算的两数各对应的二进位相与。 (两位均为1才为1) |
| | 参与运算的两数各对应的二进位相或。 (两位有一个为1就为1) |
^ | 参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。 (两位不一样则为1) |
<< | 左移n位就是乘以2的n次方。 “a<<b”是把a的各二进位全部左移b位,高位丢弃,低位补0。 |
>> | 右移n位就是除以2的n次方。 “a>>b”是把a的各二进位全部右移b位。 |
赋值运算符
赋值运算符在开发中用的也是比较多的。
运算符 | 描述 |
---|---|
= | 简单的赋值运算符,将一个表达式的值赋给一个左值 |
+= | 相加后再赋值 |
-= | 相减后再赋值 |
*= | 相乘后再赋值 |
/= | 相除后再赋值 |
%= | 求余后再赋值 |
<<= | 左移后赋值 |
>>= | 右移后赋值 |
&= | 按位与后赋值 |
|= | 按位或后赋值 |
^= | 按位异或后赋值 |
流程控制
在Go中,流程控制有以下几种。
if
if
switch case
for
标准for
forrange
goto(慎用)
if
语法
//方式一,一个if
if 条件{
//执行语句
}
//方式二,if条件不成功执行else
if 条件{
//if成功语句
}else{
//if不成功语句
}
//方式三,带有else if得
if 条件1{
//if成功语句
}else if 条件2{
//if不成功,继续else if条件
}else{
//上面都不成功,执行else
}
例子
package main
import "fmt"
func main() {
var gender = "男"
if gender == "男" {
fmt.Println("男")
} else if gender == "女" {
fmt.Println("女")
} else {
fmt.Println("啥都不是???")
}
}
switch case
switch case
和if
本质是一个东西,但是在某些场景,switch
是比if
更加简洁的。
代码
package main
import "fmt"
func main() {
var week = 3
switch week {
case 1:
fmt.Println("周一")
case 2:
fmt.Println("周二")
case 3:
fmt.Println("周三")
case 4:
fmt.Println("周四")
case 5:
fmt.Println("周五")
case 6:
fmt.Println("周六")
case 7:
fmt.Println("周日")
default://如果上面都没执行,会执行default
fmt.Println("星期八????")
}
}
注:在Go中,switch
是没有case穿透的。
Go的switch
可以case
多个值。
package main
import "fmt"
func main() {
var week = 3
switch week {
case 1, 2, 3, 4, 5:
fmt.Println("上班")
case 6:
fmt.Println("周六睡懒觉")
case 7:
fmt.Println("周日去旅游")
default:
fmt.Println("飞天了???")
}
}
for
标准for循环
语法
for 初始条件;判断条件;结束条件{
语句
}
代码
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
fmt.Println(i)
}
}
无限循环
谨慎执行!!!
package main
import "fmt"
func main() {
for{
fmt.Println("666")
}
}
for range
for ragne
可以很方便循环数组,切片,字符串,map,channel等。
遍历数组示例
package main
import "fmt"
func main() {
var student_list = [...]string{"张三", "李四", "王五"}
for index, v := range student_list {
//index为下标,v是每一个的值
fmt.Println(index, v)
}
}
注:
如果数组,切片,字符串
index是下标,v是值
如果是map
index是键,v是对(值)
如果是通道
只有一个值,就是通道内的值
补充:
在Go中,只有for循环,没有while。
for循环就两种方式。
goto
goto
可以通过标签在代码间无条件跳转,这就造成了一个局面,如果使用gote
过多,会造成逻辑混乱,跳来跳去。
所以,在开发中,要慎用,不到万不得已,不要使用。
示例
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if j == 2 {
// 直接跳转到下面的 breakTag 标签
goto breakTag
}
fmt.Printf("%v-%v\n", i, j)
}
}
//要跳转的标签
breakTag:
fmt.Println("结束for循环")
}
总结
上述我们学习了Go基础之运算符和流程控制。如果在操作过程中有任务问题,记得下面讨论区留言,我们看到会第一时间解决问题。
我是码农星期八,如果觉得还不错,记得动手点赞一下哈。感谢你的观看。
------------------- End -------------------
欢迎大家点赞,转发,转载,感谢大家的相伴与支持
想加入学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
本文分享自微信公众号 - Go语言进阶学习(gh_dced3d6523fb)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
从理论到工具:带你全面了解自动化测试框架
软件行业正迈向自主、快速、高效的未来。为了跟上这个高速前进的生态系统的步伐,必须加快应用程序的交付时间,但不能以牺牲质量为代价。快速实现质量是必要的,因此质量保证得到了很多关注。为了满足卓越的质量和更快的上市时间的需求,自动化测试将被优先考虑。对于微型、小型和中型企业(SMEs)来说,自动化自身的测试过程是非常必要的,而最关键的方面是选择正确的自动化测试框架。 什么是自动化测试框架? 自动化测试框架是为自动化测试脚本提供执行环境的脚手架。框架为用户提供了各种优势,帮助他们有效地开发、执行和报告自动化测试脚本。它更像是一个专门为自动化组织的测试而创建的系统。简而言之,我们可以说框架是各种指导方针、编码标准、概念、过程、实践、项目层次、模块化、报告机制、测试数据注入等要素的建设性混合,以此支撑自动化测试。因此,用户在自动化应用程序以利用各种生产性结果时可以遵循这些指导原则。 这些优势可以是不同的形式,如易于编写脚本、可伸缩性、模块化、可理解性、过程定义、可重用性、成本、维护等。因此,为了能够获得这些好处,建议开发人员使用一个或多个自动化测试框架。此外,当有一群开发人员在同一个应用程序的不...
- 下一篇
漫话:如何给女朋友解释什么是删库跑路?
在DBA圈子有这样一个段子: 最近几年,经常会出现各种删库跑路的事件发生,前几天还有报道说思科离职5个月的程序员,为了报复公司,删虚拟机跑路了。 这位思科的离职员工,仅凭一己之力,删掉了思科 456 台虚拟机,导致思科损失 240 万美元,相当于人民币 1650 万。 对于这些事件,程序员之所以会删库跑路无外乎两个原因,第一种可能是真的手误;那第二种可能就是蓄谋的了。 怎么删库的? 所谓"删库跑路"其实只是一种戏谑的说法,而其中的"删库"具体做法可能是删除了服务器上面的文件、清空了数据库里面的内容、删除了数据库表等。 删除不同的数据,使用的方式也不尽相同。 删除服务器文件 Linux服务器的文件删除主要是rm命令,rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。 在Linux上,使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。 rm 命令的语法是rm [选项][参数] 所以,在使用rm的时候,一定要高度注意[选项][参数]的正确性。 其中选项比较危险的有: -f:强制删除文件或目录;-r或-R:递归处理,将指定目录...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7设置SWAP分区,小内存服务器的救世主