golang-基础知识(流程控制)

news/2024/12/22 2:05:45/

1 条件判断if和switch

所有的编程语言都有这个if,表示如果满足条件就做某事,不满足就做另一件事,go中的if判断和其它语言的区别主要有以下两点

1. go里面if条件判断不需要括号

2. go的条件判断语句中允许声明一个变量,这个变量的作用只在该条件逻辑块中

例子如下:
 

package mainimport "fmt"func main() {x := 5// 条件变量在外部声明if x >= 5 {fmt.Println("x >= 5")} else {fmt.Println("x < 5")}// 条件变量在条件语句内部声明if y := 3; y > 5 {fmt.Println("y > 5")} else {fmt.Println("y <= 5")}
}

结果如下:

当同时有多个if判断时,使用switch会使得我们的代码更简洁和灵活

例子如下:

package mainimport "fmt"func main() {i := 6switch i {case 4:fmt.Println("The integer was <= 4")fallthroughcase 5:fmt.Println("The integer was <= 5")fallthroughcase 6:fmt.Println("The integer was <= 6")fallthroughcase 7:fmt.Println("The integer was <= 7")fallthroughcase 8:fmt.Println("The integer was <= 8")fallthroughdefault:fmt.Println("default case")}
}

switch中默认每个case都带了一个break, 如果匹配成功不会继续往下执行,如果需要继续往下执行,则使用fallthrough强制执行后面的代码,因此,上面代码的运行结果是:

2. 无条件跳转goto

goto适用方法和c/c++类似,我们需要在函数中定义一个标签label,然后使用goto label即可无条件跳转到该位置,例子如下:

package mainimport "fmt"func main() {x := 5fmt.Println("x = ", x)goto Herefmt.Println("test")
Here:fmt.Println("goto here")
}

结果:

1.3 循环控制for

for和其它语言C、C++类似,只是格式不用括号包括,用法如下
for expression1; expression2; expression3 {
    //...
}

expression1, expression2和expression3都是表达式,其中expression1和expression3是变量声明和函数调用返回值之类的,expression2用来条件判断,expression1在循环开始前调用,expression3在每轮循环结束时调用

例子:计算1-9整数之和

package mainimport "fmt"func main() {sum := 0for i := 0; i < 10; i++ {sum += i}fmt.Println("sum is equal to ", sum)
}// 输出:sum is equal to 45

go里面是没有while这个关键字的,想要达到和while一样的效果也可以通过for实现,在for循环中expression1和expression3都省略掉就可以达到while的效果了。例子:

package mainimport "fmt"func main() {sum := 1for sum < 10 {sum += sum}fmt.Println("sum is equal to ", sum)
}// 输出:sum is equal to 16

在循环中有两个关键操作continue和break,continue表示跳过本次循环,break表示跳出当前循环,这一点和C、C++一致。举个简单的例子

package mainimport "fmt"func main() {for i := 10; i > 0; i-- {if i == 5 {break // 或者continue}fmt.Println(i)}// break打印出来10、9、8、7、6// continue打印出来10、9、8、7、6、4、3、2、1
}

除此之外,还有一个常见的用法就是for和range配合来便利slice和map的数据,例子如下:

package mainimport "fmt"func main() {stus := map[string]string{"name":  "test","age":   "18","score": "78",}for key, val := range stus {fmt.Printf("key = %s, val = %s\n", key, val)}
}

输出结果为:


http://www.ppmy.cn/news/1534717.html

相关文章

坐标系变换总结

二维情况下的转换 1 缩放变换 形象理解就是图像在x方向和y方向上放大或者缩小。 代数形式&#xff1a; { x ′ k x x y ′ k y y \begin{cases} x k_x x \\ y k_y y \end{cases} {x′kx​xy′ky​y​ 矩阵形式&#xff1a; ( x ′ y ′ ) ( k x 0 0 k y ) ( x y ) \be…

Ubuntu24.04.1系统下VideoMamba环境配置

文章目录 前言第一步&#xff1a;基本的环境创建第二步&#xff1a;causal-conv1d和mamba_ssm库的安装第三步&#xff1a;安装requirements.txt 前言 VideoMamba环境的配置折磨了我三天&#xff0c;由于Mamba对Cuda的版本有要求&#xff0c;因此配置环境的时候Cuda版本以及各种…

计算机网络思维导图

计算机网络 网络层 概述 主要任务 实现网路互连&#xff0c;进而实现数据包在各网络之间的传输 解决问题 向运输层提供可靠传输/不可靠传输的服务网络层寻址问题路由选择问题 英特网时使用最多的互联网&#xff0c;使用TCP/IP协议栈 网络层使用网际协议IP&#xff0c;时整个…

Kali或Debian系统安装JDK1.8保姆级教程

一、下载JDK1.8 先到Oracle的官网下载JDK1.8 Java Archive | Oraclehttps://www.oracle.com/java/technologies/downloads/archive/Java Archive Downloads - Java SE 8

服务器被挂马,导致网站首页被更改怎么解决

当服务器被挂马并导致网站首页被篡改时&#xff0c;说明服务器或网站的安全性遭到破坏。为了修复并防止未来的攻击&#xff0c;你可以按照以下步骤进行操作&#xff1a; 1. 立即下线网站 目的&#xff1a;防止恶意软件进一步传播&#xff0c;保护用户数据和防止攻击者继续对网…

汇编语言中的寄存器详细介绍

在汇编语言的学习中&#xff0c;各种寄存器的学习和掌握是非常重要和关键的&#xff0c;下面就对汇编语言中的各种寄存器左一个总结和介绍。 寄存器的定义和作用 寄存器是 CPU 内部的高速存储单元&#xff0c;用于暂时存放指令、数据和地址。它们的作用类似于计算机内存&#…

Python 并发新境界:探索 `multiprocessing` 模块的无限可能

引言 随着硬件技术的发展&#xff0c;多核处理器已经成为标准配置。这意味着我们的计算机拥有执行多个任务的能力。然而&#xff0c;默认情况下&#xff0c;Python程序由于全局解释器锁&#xff08;GIL&#xff09;的存在&#xff0c;并不能充分利用这些核心资源。这就引出了m…

五子棋双人对战项目(1)——WebSocket介绍

目录 一、项目介绍 如何实现实时同步对局&#xff1f; 二、WebSocket 1、什么是WebSocket&#xff1f; 2、WebSocket的报文格式 opcode payload len payload data 3、WebSocket握手过程 4、WebSocket代码的简单编写 三、WebSocket 和 HTTP的关系 1、相同点&#xf…