编写结构化程序 - Go语言从入门到实战

编写结构化程序for、if、switch - Go语言从入门到实战

for 循环

与其他主要编程语⾔的差异:
Go 语⾔仅⽀持循环关键字 for,而且代码更简洁性和灵活性。
一般的 for 循环结构如下:

for 初始化; 条件; 后续操作 {  // 循环体  
}

Go语言在循环体中可以省略掉初始化和后续操作的部分:

for 条件 {  // 循环体  
}
代码示例:
//while 条件循环 
//while (n<5)
n := 0
for n < 5 {n++fmt.Println(n)
}
//
//⽆限循环
//while (true)
n := 0
for {//…
}

而且,Go 语言的 for 循环还可以在循环体内修改条件变量,这可以实现一些其他语言无法轻易实现的功能。例如,下面的代码用 Go 语言写出来非常简单:

//计算 1 到 10(包括 10)之间所有奇数的和。
sum := 0  
for i := 0; i < 10; i++ {  if i % 2 == 0 {  continue  }  sum += i  
}

if 条件

与其他主要编程语⾔的差异

  1. condition 表达式结果必须为布尔值,如:x > 0
  2. ⽀持变量声明和赋值declaration,如:x := 5;
if  var declaration;  condition {// code to be executed if condition is true
}
//
if x := 5; x > 0 {  // code to be executed if x is greater than 0  
}

switch 条件

与其他主要编程语⾔的差异

  1. 条件表达式不限制为常量或者整数,可以使用变量、表达式甚至函数调用作为条件;
  2. 单个 case 中,可以出现多个结果选项, 使⽤逗号分隔;
  3. 与 C 语⾔等语言规则相反,Go 语⾔不需要⽤break来明确退出⼀个 case,当一个 case 的条件满足时,控制流会自动转到该 case 代码块中的代码;
  4. 可以不设定 switch 之后的case条件表达式,在此种情况下,整个 switch 结
    构与多个 if…else… 的逻辑作⽤等同。
//差异1,代码示例
value := 5  
switch value % 2 == 0 {  
case true:  fmt.Println("Even")  
case false:  fmt.Println("Odd")  
}
//差异2,代码示例
switch num {  
case 1, 3, 5:  fmt.Println("Odd")  
case 2, 4, 6:  fmt.Println("Even")  
}
//差异3,代码示例
switch (num) {  
case 1:   //break  可以不用break
case 2:  //break  
default:  //
}
//差异4,代码示例
switch { case 0 <= Num && Num <= 3: //case表达式fmt.Printf("0-3") case 4 <= Num && Num <= 6: fmt.Printf("4-6") case 7 <= Num && Num <= 9: fmt.Printf("7-9")
}

通过已上知识,已经对Go语言的for、if、switch有些了解,现在通过包含for、if、switch的代码段来强化下记忆:

package main  import "fmt"  // 判断一个数是否为素数  
func isPrime(num int) bool {  if num <= 1 {  return false  }  for i := 2; i*i <= num; i++ {  if num%i == 0 {  return false  }  }  return true  
}  func main() {  // 声明变量  var num int  var result string  // 获取用户输入  fmt.Print("请输入一个正整数:")  fmt.Scanln(&num)  // 判断输入的数字是否为素数  if isPrime(num) {  result = "素数"  } else {  result = "非素数"  }  // 根据结果输出不同的信息  switch result {  case "素数":  fmt.Printf("%d是%s。\n", num, result)  case "非素数":  fmt.Printf("%d是%s。\n", num, result)  default:  fmt.Println("未知结果")  }  
}

首先使用条件语句if判断输入的数字是否为素数,并将结果存储在变量result中。
然后,使用switch语句根据变量result的值输出不同的信息。
在switch语句中,每个case分支对应一个可能的值,执行相应的输出。
如果没有匹配的case分支,可以使用default分支来处理未知结果。


学习Go语言主要是多练,多找些代码段写写,不懂可以私聊咨询。

欢迎关注云尔Websites CSDN博客

欢迎进入Golang交流社区

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

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

相关文章

基础数据结构之——【顺序表】(上)

从今天开始更新数据结构的相关内容。&#xff08;我更新博文的顺序一般是按照我当前的学习进度来安排&#xff0c;学到什么就更新什么&#xff08;简单来说就是我的学习笔记&#xff09;&#xff0c;所以不会对一个专栏一下子更新到底&#xff0c;哈哈哈哈哈哈哈&#xff01;&a…

八个不可不知的SQL高级方法

结构化查询语言&#xff08;SQL&#xff09;是一种广泛使用的工具&#xff0c;用于管理和操作数据库。基本的SQL查询简单易学&#xff0c;但掌握高级SQL技术可以将您的数据分析和管理能力提升到新的高度。 高级SQL技术是指一系列功能和函数&#xff0c;使您能够对数据执行复杂…

【day10.01】使用select实现服务器并发

用select实现服务器并发&#xff1a; linuxlinux:~/study/1001$ cat server.c #include <myhead.h>#define ERR_MSG(msg) do{\printf("%d\n",__LINE__);\perror(msg);\ }while(0)#define PORT 8880#define IP "192.168.31.38"int main(int argc, c…

【C/C++笔试练习】二维数组、二维数组的访问,解引用,地址计算、计算糖果、进制转换

文章目录 C/C笔试练习1.二维数组&#xff08;1&#xff09;二维数组的访问&#xff08;2&#xff09;二维数组的初始化&#xff08;3&#xff09;二维数组的解引用&#xff08;4&#xff09;二维数组的解引用&#xff08;5&#xff09;多维数组的解引用&#xff08;6&#xff0…

Qt超时自动关闭子窗口

有的时候我们需要某些窗口实现超时自动关闭&#xff0c;但是Qt窗口一般是多部件堆叠而成&#xff0c;如果常规处理&#xff0c;对每一个部件进行鼠标点击事件处理显然不太合理。通过直接重新实现QApplication::notify函数来全局获取鼠标点击事件&#xff0c;最终实现功能。当然…

Blued引流脚本

于多数人来说&#xff0c;引流都是一个比较困难的操作&#xff0c;因为流量不会听你的。所以任何人在网上做生意&#xff0c;或者开一个实体店&#xff0c;都会为流量而发愁&#xff0c;其实对于流量的吸引来说&#xff0c;我们越是刻意为之&#xff0c;可能所获得的效果也越不…

Go结构体深度探索:从基础到应用

在Go语言中&#xff0c;结构体是核心的数据组织工具&#xff0c;提供了灵活的手段来处理复杂数据。本文深入探讨了结构体的定义、类型、字面量表示和使用方法&#xff0c;旨在为读者呈现Go结构体的全面视角。通过结构体&#xff0c;开发者可以实现更加模块化、高效的代码设计。…

对分段有序的数组排序(前、后部分分别递增)

文章目录 1 题目2 思路2.1 思路1&#xff08;直接插入法&#xff09;2.2 思路2&#xff08;归并&#xff09; 3 实现3.1 思路13.2 思路2 1 题目 设mn个元素顺序存放在数组A[1…mn]中&#xff0c;前m个元素递增有序&#xff0c;后n个元素递增有序&#xff0c;试设计一个在时间和…

【Android】安卓手机系统内置应用安装失败解决方案

现有的闲置手机有个内置app可老旧了&#xff0c;没有开发者维护&#xff0c;于是问题不断&#xff0c;影响了体验&#xff0c;后来在网上查找发现有它的新版本&#xff0c;想要更新却没有自动更新&#xff08;后台服务断开了&#xff09;&#xff0c;有类似的想法可以来这里了解…

Python学习之索引与切片

Python学习之索引与切片 s “0abcdefghijklmnopqrstuvwxyz”&#xff0c;第一个元素‘0’&#xff0c;索引号为0&#xff0c;最后一个元素‘z’&#xff0c;索引号为26 1. s[0]获取索引号为0的元素 2. s[1:3]获取索引号为1的元素&#xff0c;直到但不包括索引号为3的元素。即…

buuctf-[Zer0pts2020]Can you guess it?

点击source&#xff0c;进入源代码 <?php include config.php; // FLAG is defined in config.phpif (preg_match(/config\.php\/*$/i, $_SERVER[PHP_SELF])) {exit("I dont know what you are thinking, but I wont let you read it :)"); }if (isset($_GET[so…

RandomAccessFile实现断点续传

断点续传是指在文件传输过程中&#xff0c;当传输中断或失败时&#xff0c;能够恢复传输并继续从上次中断的位置继续传输。 RandomAccessFile类 RandomAccessFile是Java提供的一个用于文件读写的类&#xff0c;它可以对文件进行随机访问&#xff0c;即可以直接跳转到文件的任意…

3种python查看安装的所有库,然后将他们组合成一个pip命令

① 你可以使用以下命令查看已安装的Python库&#xff1a; pip list该命令会列出所有已安装的Python库及其版本号。 如果你需要将已安装的库组合成一个pip命令&#xff0c;可以使用以下命令&#xff1a; pip freeze > requirements.txt该命令会将所有已安装的Python库及其…

IntelliJ IDEA 控制台中文乱码的四种解决方法

前言 IntelliJ IDEA 如果不进行配置的话&#xff0c;运行程序时控制台有时候会遇到中文乱码&#xff0c;中文乱码问题非常严重&#xff0c;甚至影响我们对信息的获取和程序的跟踪。开发体验非常不好。 本文中我总结出四点用于解决控制台中文乱码问题的方法&#xff0c;希望有助…

ts的函数

ts的Functions 大部分基础内容可以通过这篇blog学习&#x1f449;Functions - TypeScript Deep Dive 函数类型在TypeScript类型系统中扮演着非常重要的角色&#xff0c;它们是可组合系统的核心构建块. 1.Parameter annotations 你可以像变量注解一样&#xff0c;给functio…

scrapy爬取图片

文章目录 ImagesPipeline使用步骤&#xff1a;1. 数据解析&#xff1a; 获取图片的地址 & 2. 将存储图片地址的item提交到指定的管道类&#xff08;hotgirls.py&#xff09;3. 在管道文件中自制一个基于ImagesPipeLine的一个管道类&#xff01;&#xff01;天大的坑 &#…

ChatGPT Prompting开发实战(十二)

一、如何开发prompts实现个性化的对话方式 通过设置“system”和“user”等roles&#xff0c;可以实现个性化的对话方式&#xff0c;并且可以结合参数“temperature”的设定来差异化LLM的输出内容。在此基础上&#xff0c;通过构建一个餐馆订餐对话机器人来具体演示对话过程。…

git你学“废”了吗?——git撤销操作指令详解

git你学“废”了吗&#xff1f;——git撤销操作指令详解&#x1f60e; 前言&#x1f64c;撤销的本质撤销修改情况一&#xff1a;撤销工作区的修改方式一&#xff1a;方式二&#xff1a;演示截图&#xff1a; 撤销修改情况二&#xff1a;撤销暂存区和工作区的修改操作截图&#…

为什么字节大量用GO而不是Java?

见字如面&#xff0c;我是军哥。 我看很多程序员对字节编程语言选型很好奇&#xff0c;为此我还特地问了在字节的两位4-1的技术大佬朋友&#xff0c;然后加上自己的思考&#xff0c;总结了一下就以下 2 个原因&#xff1a; 1、 选型上没有历史包袱 字节的早期的程序员大多来自于…

条件控制

章节目录&#xff1a; 一、简单的示例二、条件测试三、if 语句四、使用 if 语句处理列表五、结束语 一、简单的示例 cars [audi, bmw, subaru, toyota]for car in cars:if car bmw:print(car.upper())else:print(car.title())# Audi# BMW# Subaru# Toyota二、条件测试 每条 …