目录
运算符" >运算符
算数运算符" >算数运算符
关系运算符" >关系运算符
逻辑运算符" >逻辑运算符
位运算符" >位运算符
赋值运算符" >赋值运算符
流程控制" >流程控制
if" >if
switch case
" >switch case
for
" >for
标准for循环" >标准for循环
无限循环
" >无限循环
for range
" >for range
goto" >goto
首页 后端开发 Golang 一篇文章带你了解Go语言基础运算符和流程控制

一篇文章带你了解Go语言基础运算符和流程控制

Jul 20, 2023 pm 02:38 PM
go语言

这次咱们继续学习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
<🎜>
描述<🎜><🎜>
&&<🎜><🎜>逻辑和运算符。如果双边的操作数均为True,则为True,否则为False<🎜><🎜>
|<🎜>|<🎜> <🎜> 逻辑或运算符。如果双边的操作数有一个 True,则为 True,否则为 False<🎜><🎜>< /td>
!<🎜><🎜>逻辑 NOT 运算符。如果条件为 True,则为 False,否则为 True<🎜><🎜>

注:逻辑运算符是很重要的,开发中经常用到。


位运算符

位运算符有些底层,特殊情况会用到

运算符描述
&参与运算的两数各对应的二进位相与。 (两位均为1才为1)
|参与运算的两数各对应的二进位相或。 (两位有一个为1就为1)
^参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。(两位不一样则为1)
<<左移n位就是乘以2的n次方。 “a<
>> 右移n位就是除以2的n次方。 “a>>b”是把a的各二进位全部右移b位。


赋值运算符

赋值运算符在开发中用的也是比较多的。

运算符 描述
= 简单的赋值运算符,将一个表达式的值赋给一个左值
+= 相加后再赋值
-= 相减后再赋值
*= 相乘后再赋值
/= 相除后再赋值
%= 求余后再赋值
<<=左移后赋值
>>= 右移后赋值
&= 按位与后赋值
|= 按位或后赋值
^= 按位异或后赋值


流程控制

在Go中,流程控制有以下几种。

  • if

    • if

    • switch case

  • for

    • 标准for

    • forrange

  • goto(慎用)


if

语法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

//方式一,一个if

if 条件{

    //执行语句

}

//方式二,if条件不成功执行else

if 条件{

    //if成功语句

}else{

    //if不成功语句

}

//方式三,带有else if得

if 条件1{

    //if成功语句

}else if 条件2{

    //if不成功,继续else if条件

}else{

    //上面都不成功,执行else

}

登录后复制

例子

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

package main

 

import "fmt"

 

func main() {

    var gender = "男"

 

    if gender == "男" {

        fmt.Println("男")

    } else if gender == "女" {

        fmt.Println("女")

    } else {

        fmt.Println("啥都不是???")

  }

}

登录后复制


switch case

switch caseif本质是一个东西,但是在某些场景,switch是比if更加简洁的。

代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

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多个值。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

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循环

语法

1

2

3

for 初始条件;判断条件;结束条件{

    语句

}

登录后复制

代码

1

2

3

4

5

6

7

8

9

package main

 

import "fmt"

 

func main() {

    for i := 0; i < 10; i++ {

        fmt.Println(i)

  }

}

登录后复制

无限循环

谨慎执行!!!

1

2

3

4

5

6

7

8

9

package main

 

import "fmt"

 

func main() {

    for{

        fmt.Println("666")

  }

}

登录后复制

for range

for ragne可以很方便循环数组,切片,字符串,map,channel等。

遍历数组示例

1

2

3

4

5

6

7

8

9

10

11

package main

 

import "fmt"

 

func main() {

    var student_list = [...]string{"张三", "李四", "王五"}

    for index, v := range student_list {

        //index为下标,v是每一个的值

        fmt.Println(index, v)

  }

}

登录后复制

注:

1

2

3

4

5

6

如果数组,切片,字符串

  index是下标,v是值

如果是map

  index是键,v是对(值)

如果是通道

  只有一个值,就是通道内的值

登录后复制

补充:

在Go中,只有for循环,没有while。

for循环就两种方式。


goto

goto可以通过标签在代码间无条件跳转,这就造成了一个局面,如果使用gote过多,会造成逻辑混乱,跳来跳去。

所以,在开发中,要慎用,不到万不得已,不要使用。


示例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

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语言基础运算符和流程控制的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Go的爬虫Colly中Queue线程的问题是什么? Go的爬虫Colly中Queue线程的问题是什么? Apr 02, 2025 pm 02:09 PM

Go爬虫Colly中的Queue线程问题探讨在使用Go语言的Colly爬虫库时,开发者常常会遇到关于线程和请求队列的问题。�...

Go语言中用于浮点数运算的库有哪些? Go语言中用于浮点数运算的库有哪些? Apr 02, 2025 pm 02:06 PM

Go语言中用于浮点数运算的库介绍在Go语言(也称为Golang)中,进行浮点数的加减乘除运算时,如何确保精度是�...

在 Go 语言中,为什么使用 Println 和 string() 函数打印字符串会出现不同的效果? 在 Go 语言中,为什么使用 Println 和 string() 函数打印字符串会出现不同的效果? Apr 02, 2025 pm 02:03 PM

Go语言中字符串打印的区别:使用Println与string()函数的效果差异在Go...

在Go语言中使用Redis Stream实现消息队列时,如何解决user_id类型转换问题? 在Go语言中使用Redis Stream实现消息队列时,如何解决user_id类型转换问题? Apr 02, 2025 pm 04:54 PM

Go语言中使用RedisStream实现消息队列时类型转换问题在使用Go语言与Redis...

GoLand中自定义结构体标签不显示怎么办? GoLand中自定义结构体标签不显示怎么办? Apr 02, 2025 pm 05:09 PM

GoLand中自定义结构体标签不显示怎么办?在使用GoLand进行Go语言开发时,很多开发者会遇到自定义结构体标签在�...

Go语言中`var`和`type`关键字定义结构体的区别是什么? Go语言中`var`和`type`关键字定义结构体的区别是什么? Apr 02, 2025 pm 12:57 PM

Go语言中结构体定义的两种方式:var与type关键字的差异Go语言在定义结构体时,经常会看到两种不同的写法:一�...

Go语言中哪些库是由大公司开发或知名的开源项目提供的? Go语言中哪些库是由大公司开发或知名的开源项目提供的? Apr 02, 2025 pm 04:12 PM

Go语言中哪些库是大公司开发或知名开源项目?在使用Go语言进行编程时,开发者常常会遇到一些常见的需求,�...

在Go编程中,如何正确管理Mysql和Redis的连接与释放资源? 在Go编程中,如何正确管理Mysql和Redis的连接与释放资源? Apr 02, 2025 pm 05:03 PM

Go编程中的资源管理:Mysql和Redis的连接与释放在学习Go编程过程中,如何正确管理资源,特别是与数据库和缓存�...

See all articles