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

news2024/10/12 14:22:20

1 条件判断if和switch

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

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

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

例子如下:
 

package main

import "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 main

import "fmt"

func main() {

	i := 6
	switch i {
	case 4:
		fmt.Println("The integer was <= 4")
		fallthrough
	case 5:
		fmt.Println("The integer was <= 5")
		fallthrough
	case 6:
		fmt.Println("The integer was <= 6")
		fallthrough
	case 7:
		fmt.Println("The integer was <= 7")
		fallthrough
	case 8:
		fmt.Println("The integer was <= 8")
		fallthrough
	default:
		fmt.Println("default case")
	}
}

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

2. 无条件跳转goto

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

package main

import "fmt"

func main() {
	x := 5
	fmt.Println("x = ", x)
	goto Here
	fmt.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 main

import "fmt"

func main() {
	sum := 0
	for 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 main

import "fmt"

func main() {
	sum := 1
	for sum < 10 {
		sum += sum
	}
	fmt.Println("sum is equal to ", sum)
}

// 输出:sum is equal to 16

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

package main

import "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 main

import "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.coloradmin.cn/o/2208112.html

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

相关文章

MySQL8.0环境部署+Navicat17激活教程

安装MySQL 下载MySQL MySQL官网下载当前最新版本&#xff0c;当前是8.0.39。 选择No thanks, just start my download等待下载即可。 安装MySQL 下载完成后&#xff0c;双击安装进入安装引导页面。选择Custom自定义安装。 选择MySQL Server 8.0.39 - X64安装。 点击Execute执…

基于BeautyEye开发Java程序用户界面

文章目录 I idea引入jar包添加本地jar包maven方式引入本地包方式1:将第三方JAR包安装到本地仓库maven方式引入本地包方式2:引用本地路径将本地jar包打进war包Maven内置变量说明II BeautyEye Swing外观实现方案案例III 知识扩展Swing常用的顶级容器BeautyEye SwingI idea引入j…

在python中如何判断回文串(二)?

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

一次性解决vue3引入@jiaminghi/data-view需要手动修改node_modules下文件

修改文件1&#xff1a;node_modules\jiaminghi\data-view\lib\components\decoration6\src\main.vue 修改文件2&#xff1a; node_modules\jiaminghi\data-view\lib\components\decoration3\src\main.vue 修改前&#xff1a; 修改后&#xff1a; 通过打补丁的方式对引用库进行…

SpringBoot购物推荐网站:从零到一的构建过程

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…

如何使用ipopt进行非线性约束求目标函数最小值(NLP非线性规划)内点法(Interior point method)

非线性规划,一般用matlab调用cplex和gurobi了,但这两个一般用于线性规划和二次规划 线性规划LP,二次规划(quadratic programming),如果要求更一般的非线性规划IPOT是个很好的选择,求解器很多,根据情况自己选择 非线性 具体的,这篇文章介绍的很清楚了https://blog.csd…

Javascript笔试题目(一)

1.JS查找文章中出现频率最高的单词? 要在JavaScript中查找文章中出现频率最高的单词&#xff0c;你可以按照以下步骤进行操作&#xff1a; 将文章转换为小写&#xff1a;这可以确保单词的比较是大小写不敏感的。移除标点符号&#xff1a;标点符号会干扰单词的计数。将文章拆…

SpringBoot环境下的电商推荐网站开发全攻略

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…

题目:1297. 子串的最大出现次数

> Problem: 1297. 子串的最大出现次数 题目&#xff1a;1297. 子串的最大出现次数 题目描述 给定一个字符串 s&#xff0c;要求找到满足以下条件的任意子串的出现次数&#xff0c;并返回该子串的最大出现次数&#xff1a; 子串中不同字母的数目必须小于等于 maxLetters。…

使用3080ti配置安装blip2

使用3080ti运行blip2的案例 本机环境&#xff08;大家主要看GPU&#xff0c;ubuntu版本和cuda版本即可&#xff09;&#xff1a;安装流程我最后安装的所有包的信息&#xff08;python 3.9 &#xff09;以供参考&#xff08;environment.yml&#xff09;&#xff1a; 本机环境&a…

Git:LF will be replaced by CRLF、pytest PermissionError以及Git应用中的一些问题解决及一些使用技巧

一、Git:LF will be replaced by CRLF和pytest: --cov NTERNALERROR PermissionError 1. git warning: LF will be replaced by CRLF in ***file 偶然git add在进行代码提交的时候碰到警告warning: LF will be replaced by CRLF in ***file&#xff0c;原因是编辑的代码内容中…

java抽象类和接口-cnblog

java抽象类和接口 1 抽象类 在解决实际问题时,一般将父类作为抽象类&#xff0c;子类继承父类&#xff0c;并且实例化对象 在一个类中&#xff0c;只要有有一个方法是抽象的&#xff0c;类就是抽象的 抽象类被继承后需要实现所有的抽象方法&#xff0c;抽象类的关键词是abst…

entity,pojo,vo,dto 详解

在Java项目中&#xff0c;包名通常用于组织代码&#xff0c;使其更加清晰和易于维护。entity、pojo、vo和dto是常见的包名&#xff0c;它们各自有不同的含义和用途。下面将详细解释这些包名的含义&#xff0c;并提供一个示例&#xff0c;帮助你更好地理解它们在项目中的应用。 …

第二届 龙信杯 电子数据取证竞赛部分Writeup

大佬文章&#xff1a; 龙信杯复现&#xff08;23、24&#xff09; | BthclsBlog 手机部分 资料&#xff1a;2024年第二届龙信杯 WP_2024龙信杯wp-CSDN博客 1.分析手机检材&#xff0c;请问此手机共通过adb连接过几个设备&#xff1f;[标准格式&#xff1a;3] 2 /data/a…

基于Java SpringBoot和Vue校园新闻论坛管理系统设计

摘要 本系统采用Java Spring Boot作为后端框架&#xff0c;前端使用Vue.js构建用户界面&#xff0c;旨在为校园新闻论坛提供一个高效、易用且功能全面的管理平台。通过整合SpringBoot的快速开发优势与Vue的响应式设计&#xff0c;实现了一个包含用户注册登录、新闻发布审核、评…

Rust编程的泛型

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟&#xff0c;李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust编程与项目实战_夏天又到了的博客-CSDN博客 7.6.1 什么是泛型编程 C/C、Rust都是强类型语言&#xff0c;在对数据进行处理时&a…

详解前端开发都需要掌握的十个 JavaScript 基本数组函数

假设你正在开发一个复杂的 Web 项目。你的数据来自许多 API&#xff0c;你的工作是高效地处理、过滤和分析这些数据。你的时间很紧张&#xff0c;所以每一行代码都很重要。 这时学习高级 JavaScript 数组方法就会对你有所帮助。 这些函数不仅可以减少代码量&#xff0c;还可以…

C语言—双链表

一、双向链表的结构 注意&#xff1a;这⾥的“带头”跟前⾯我们说的“头节点”是两个概念&#xff0c;实际前⾯在单链表阶段称呼不严谨&#xff0c;带头链表⾥的头节点&#xff0c;实际为“哨兵位”&#xff0c;哨兵位节点不存储任何有效元素&#xff0c;只是站在这⾥“放哨的”…

desmos和webgl绘制线条

目录 desmos绘制 webgl绘制 将线段坐标生成三角化坐标 处理斜接线段 处理圆角 尖角 先在desmos上面完成线条lineJoin绘制的,再将代码和公式转到js用webgl绘制. desmos绘制 示例 desmos计角斜接角时&#xff0c;需要用到的一些函数。在desmos定义成公共函数&#xff0c…

[含文档+PPT+源码等]精品基于springboot实现的原生Andriod心理健康辅导平台

基于Spring Boot实现的原生Android心理健康辅导平台&#xff0c;其背景可以从以下几个方面进行详细阐述&#xff1a; 一、技术背景 Spring Boot框架&#xff1a;Spring Boot是Spring框架的一个子集&#xff0c;它通过自动配置、简化依赖管理、内嵌容器等特性&#xff0c;极大…