【Go编程语言】流程控制

news2024/9/21 22:33:16

流程控制


文章目录

  • 流程控制
  • 一、if 语句
    • 1.if 嵌套语句
  • 二、switch 语句
  • 三、for 循环
  • 四、string


在这里插入图片描述


程序的流程控制结构一具有三种:顺序结构,选择结构,循环结构

在这里插入图片描述

  • 顺序结构:从上到下,逐行执行。默认的逻辑

  • 选择结构:条件满足某些代码才会执行

    • if

    • switch

    • select ,后面 channel 再讲

  • 循环结构:条件满足某些代码会被反复执行0-N次

    • for

一、if 语句

条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为false的情况在执行另外的语句。

下图展示了程序语言中条件语句的结构:
在这里插入图片描述

package main

import "fmt"

func main() {
	// 分数
	var score int = 66

	if score >= 90 && score <= 100 {
		fmt.Println("优秀")
	} else if score >= 80 && score < 90 {
		fmt.Println("良好")
	} else if score >= 60 && score < 80 {
		fmt.Println("及格")
	} else {
		fmt.Println("不及格")
	}

}

输出
在这里插入图片描述

1.if 嵌套语句

if 布尔表社式 1 {
	/* 在布尔表达式 1 为 true 3:执行 */
	if 布尔表达式 2 {
		/* 在布尔表达式 2 true 时执行 */
	}
}
package main

import "fmt"

func main() {
	var one, two int
	// 初始密码
	var pwd int = 12345678
	// 接收用户输入密码
	fmt.Print("请输入密码:")
	fmt.Scan(&one)

	// 功能:验证密码是否正确
	if one == pwd {
		fmt.Print("请再次输入密码:")
		fmt.Scan(&two)
		if two == pwd {
			fmt.Println("登录成功")
		} else {
			fmt.Println("第二次输入密码错误,登录失败,请重新输入密码……")
		}
	} else {
		fmt.Println("输入密码错误,登录失败,请重新输入密码……")
	}

}

输出
在这里插入图片描述

二、switch 语句

switch语句用于基于不同条件执行不同动作,每一个case分支都是唯一的,从上至下逐一测试,直到匹配为止。

switch var1 { 
	case test1:
		...
	case test2:
		...		
	defauIt:
		...
}

switch语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加 break.。switch默认情况下 case 最后自带 break 语句

package main

import "fmt"

func main() {
	var score string = "D"
	
	// 匹配
	switch score {
	case "A":
		fmt.Println("等级为A,成绩在90~100范围内")
	case "B":
		fmt.Println("等级为B,成绩在80~90范围内")
	case "C":
		fmt.Println("等级为C,成绩在60~79范围内")
	default:
		fmt.Println("等级为D,成绩在0~59范围内")

	}
	// switch 默认条件 bool = true
	switch {
	case false:
		fmt.Println("false")
	case true:
		fmt.Println("true")
	default:
		fmt.Println("其他")
	}
}

输出
在这里插入图片描述

fallthrough 贯穿,直通

switch默认情况下匹配成功后就不会执行其他case,如果我们需要执行后面的case,可以使用 fallthrough 穿透case使用 fallthrough 会强制执行后面的 case 语句,fallthrough不会判断下条case的表达结果是否为true.

package main

import "fmt"

func main() {

	a := false
	// switch 默认条件 bool = true
	switch a {
	case false:
		fmt.Println("false")
		fallthrough // case 穿透,不管下一个条件是否满足,都会执行
	case true:
		fmt.Println("true")
	default:
		fmt.Println("其他")
	}
}

输出
在这里插入图片描述

package main

import "fmt"

func main() {

	a := false
	// switch 默认条件 bool = true
	switch a {
	case false:
		fmt.Println("false")
		fallthrough // case 穿透,不管下一个条件是否满足,都会执行
	case true:
		if a == false {
			break // 终止 case 穿透
		}
		fmt.Println("true")
	default:
		fmt.Println("其他")
	}
}

输出
在这里插入图片描述

三、for 循环

在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。for 循环是一个循环控制结构,可以执行指定次数的循环。

package main

import "fmt"

func main() {
	// for 条件的起始值;循环条件;控制变量自增或自减
	// for ;循环条件;
	// for {} 无限循环
	i := 1
	for {
		fmt.Println(i)
		i++
	}
	sum := 0
	// for 给控制变量赋值初值,循环条件给控制变量增量或减量\

	// 计算 1 到 10 的数字之和
	for i := 1; i <= 10; i++ {
		// 循环体
		sum += i

	}
	fmt.Println(sum)
}

栗子:输出一个10*10的方阵

package main

import "fmt"

func main() {
	// i 控制行, j 控制列 
	for i := 0; i < 10; i++ {
		for j := 0; j < 10; j++ {
			fmt.Print("* ")
		}
		fmt.Println()
	}

}

输出
在这里插入图片描述
栗子:九九乘法表

package main

import "fmt"

func main() {
	// i 控制行, j 控制列
	for i := 1; i < 10; i++ {
		for j := 1; j <= i; j++ {
			fmt.Printf("%d*%d=%d \t", j, i, j*i)
		}
		fmt.Println()
	}

}

输出
在这里插入图片描述

break 结束当前整个循环

package main

import "fmt"

func main() {

	for i := 1; i <= 6; i++ {
		if i == 4 {
			break
		}
		fmt.Println(i)
	}


}

continue 结束本次循环

package main

import "fmt"

func main() {

	for i := 1; i <= 6; i++ {
		if i == 4 {
			continue
		}
		fmt.Println(i)
	}


}

输出
在这里插入图片描述

四、string

什么是String

Go中的字符串是一个字节的切片,可以通过将其内容封装在""中来创建字符串,Go中的字符串是 Unicode 兼容的,并日是 UTF-8 编码。字符串是一些字节的集合。

package main

import "fmt"

func main() {

	str := "hello,guan"
	fmt.Println(str)

	// 获取字符串的长度 len
	fmt.Println("字符串长度为:", len(str))

	// 获取指定的字节
	fmt.Println("字节打印:", str[4])
	fmt.Printf("%c", str[4])
	fmt.Println()

	for i := 0; i < len(str); i++ {
		fmt.Printf("%c\n", str[i])
	}

	// for range 循环,遍历数组、切片....
	// 返回下标和对应的值,使用这个值就行了
	for i, v := range str {
		fmt.Print(i)
		fmt.Print("--")
		fmt.Printf("%c", v)
		fmt.Println()
	}

}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/508836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C4D云渲染平台哪家好?

Cinema 4d&#xff08;简称C4D&#xff09;作为CG业内一款人人皆知的三维制作软件&#xff0c;操作界面简单清爽是它的亮点之一。此外&#xff0c;具有建模、灯光、材质、绑定、动画、渲染等强大功能的C4D的应用范围也十分广泛&#xff0c;包括电商海报、时尚设计、影视后期、广…

Java系统环境变量配置

PATH环境变量 PATH环境变量用于保存一系列命令&#xff08;可执行程序&#xff09;的路径&#xff0c;每个路径之间以分号分隔。当在命令行窗口运行一个命令时&#xff0c;操作系统首先会在当前目录下查找是否存在该命令对应的可执行文件&#xff0c;如果未找到&#xff0c;操作…

最新一键将网站DEDECMS 迁移到 WordPress脚本

DEDECMS宣布开始对运营类网站收费了,一年5800元,如果不想付费,那就需要转到其他网站了,就是一个不错的选择。 最近大神wordpress果酱牛逼闪闪的Denis和几个程序员制作了一个转Wordpress的,有需要的可以去下载使用,完全免费! 经过几个夜晚通宵的努力,我们终于搞定了一键…

开发必备,开源 or 免费的 AI 编程助手

AI 大模型的火热&#xff0c;让开发圈近来如虎添翼&#xff0c;各种各样基于 AI 技术的开发者工具和新范式不断涌现&#xff0c;尤其是 Github 和 OpenAI 共同推出的 Copilot X &#xff0c;更是一骑绝尘。本文推荐一些开源 or 免费的 AI 编程工具&#xff0c;不妨试着用起来。…

基于stm32物联网开发板(1)

基于stm32物联网开发板(1) 本开发板采用了STM32F103RET6作为核心CPU&#xff0c;72MHZ工作频率&#xff0c;512KB flash&#xff0c;64KB Sram。本开发平台外设模块有ESP8266 WIFI模块、1.3寸LCD彩屏、SYN6288语音模块、MAX30102心率血氧传感器、AD8232心电图监测模块、BH1750环…

mysql的高级查询语句

1.本文前言 数据库是用来存储数据&#xff0c;更新&#xff0c;查询数据的工具&#xff0c;而查询数据是一个数据库最为核心的功能&#xff0c;数据库是用来承载信息&#xff0c;而信息是用来分析和查看的。所以掌握更为精细化的查询方式是很有必要的。本文将围绕数据的高级查…

Figma中文网?比Figma更懂你的设计网站!

一个比 Figma 更懂你的设计网站的 Figma 中文网 —— 即时设计是一个非常有用的设计资源平台&#xff0c;它提供了大量的免费设计素材&#xff0c;包括来自各大厂商的 UI 组件库、精美的模板、插画设计和矢量图标素材等等。设计师可以从中学习到大师的设计技巧和规范&#xff0…

Ubuntu18.04 下安装 MATLAB 2021a

1、MATLAB 软件获取 南开大学软件之家&#xff1a;http://ca.nankai.edu.cn&#xff0c;非南开大学校园IP无法登陆该平台。 点击浏览更多&#xff0c;找到 R2021a_Linux&#xff0c;开始下载&#xff0c;下载 R2021a_Linux.iso 镜像文件。 参考该网页下的个人版在线安装指南&a…

基于git的开发规范总结

文章目录 各分支命名规范gitee基本开发流程及定义gitflow工作流gitflow工作流常用分支主要工作流程命名规则gitflow工作流程图 Git分支开发管理策略主分支Master开发分支DevelopGit创建Develop分支的命令&#xff1a;将Develop分支发布到Master分支的命令&#xff1a; 临时性分…

【windows编程之对话框】对话框原理,对话框的创建

文章目录 引言一.对话框原理1.对话框的分类2.对话框的基本使用2.自定义对话框窗口消息处理函数 二.模式对话框- 1.创建对话框- 2.对话框的关闭- 3.对话框消息 三.模式对话框创建过程实践四.无模式对话框 引言 在本章节中我们来讲解Windows/Win32编程中对话框的原理和对话框的创…

Ajax请求,基于JSON的数据交换 实例

前端代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>发送Ajax GET请求 展示学生信息列表</title> <script type"text/javascript"> w…

camunda任务监听器如何使用

在Camunda工作流引擎中&#xff0c;任务监听器是一种机制&#xff0c;用于在业务任务执行期间捕获特定事件并执行相应的操作。它们可以帮助您实现一些重要的任务&#xff0c;例如&#xff1a; 1、记录或更新业务数据&#xff1a;当任务完成或取消时&#xff0c;您可以使用任务…

本地搭建wamp服务器并内网穿透实现无公网IP远程访问

文章目录 前言1.Wamp服务器搭建1.1 Wamp下载和安装1.2 Wamp网页测试 2. Cpolar内网穿透的安装和注册2.1 本地网页发布2.2 Cpolar云端设置2.3 Cpolar本地设置 3. 公网访问测试4. 结语 转载自cpolar极点云的文章&#xff1a;无公网IP&#xff1f;教你在外远程访问本地Wamp服务器「…

【C++】入门基础

文章目录 1、命名空间1.1、命名空间的概念1.2、命名空间的定义1.3、命名空间的使用 2、初识cout和cin2.1、标准输入输出对象简介2.2、缓冲区2.3、cout2.4、cin 3、缺省参数3.1、全缺省参数3.2、半缺省参数3.3、注意事项 4、函数重载4.1、函数重载的概念4.2、函数重载的定义4.3、…

OpenCV实战——根据立体图像计算深度信息

OpenCV实战——根据立体图像计算深度信息 0. 前言1. 立体视觉系统2. 计算深度信息3. 完整代码相关链接 0. 前言 人类可以用两只眼睛构建三个维度世界&#xff0c;而为机器人配备两个摄像头时&#xff0c;机器人同样也可以做到这一点&#xff0c;这称为立体视觉 (stereo vision…

exe4j

exe4j是一种用于将Java程序打包成可执行文件&#xff08;.exe&#xff09;的软件工具。使用exe4j&#xff0c;开发人员可以将Java程序打包成可独立运行的.exe文件&#xff0c;并将所需的Java虚拟机&#xff08;JVM&#xff09;包含在内。exe4j提供了许多配置选项&#xff0c;可…

五、FM1288调试方案-调试原理

本篇只讲述调试原理,侧重流程、理论,不涉及细节,比如应该调哪一块、哪些寄存器这些。 文章目录 1. 结构框图1.1 回声消除原理1.2 硬件结构2. 调试方案2.1 uart串口调试2.2 I2C调试1. 结构框图 1.1 回声消除原理 回声消除的详细原理,牵涉到算法相关的东西,不太了解,只描…

二项分布的参数p的检验

设某事件发生的概率为p&#xff0c;做m次的独立检验&#xff0c;以X为发生的次数&#xff0c;则X服从二项分布B(m, p)&#xff0c;则针对X可以做出假设 定义一个合理的检验,&#xff0c;设置一个阈值C&#xff1a; F : 当 X < C时&#xff0c;接受H0&#xff0c;否则拒绝H0 …

[亲测有效] 如何实现vivo图案解锁

vivo是最受欢迎的智能手机品牌之一&#xff0c;拥有庞大的客户群。但是在使用vivo手机的过程中&#xff0c;难免会出现意外。其中最常见的是忘记密码。那么&#xff0c;如果您忘记了密码&#xff0c;如何解锁 vivo 手机呢&#xff1f;这是您需要知道的一切。本文将向您展示5种轻…

云原生应用环境中的权限提升

对于如今的现代数字应用程序&#xff0c;在操作事件期间管理访问权限对于确保企业的生产环境和基础架构安全都至关重要。一个被大家认可的基本安全原则是最小权限原则&#xff0c;基于该原则开发人员和运维人员应该具备尽可能小的权限&#xff0c;只访问必须的生产环境及数据&a…