100天精通Golang(基础入门篇)——第9天:Go语言程序的循环语句

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

在这里插入图片描述

博主 libin9iOak带您 Go to Golang Language.✨
个人主页——libin9iOak的博客
《面试题大全》 文章图文并茂生动形象简单易学欢迎大家来踩踩~
《IDEA开发秘籍》学会IDEA常用操作工作效率翻倍~
希望本文能够给您带来一定的帮助文章粗浅敬请批评指正

100天精通Golang基础入门篇——第9天Go语言程序的循环语句

摘要

本篇博客介绍了 Go 语言程序中的循环语句包括 for 循环、循环变体和多层 for 循环。同时讨论了跳出循环的语句包括 break 和 continue以及介绍了 goto 语句的使用。通过学习本篇内容可以加深对 Go 语言循环语句的理解和应用。

引言

在编程中循环语句是一种重要的控制结构它允许我们重复执行一段代码块直到满足特定条件为止。Go 语言提供了灵活且功能丰富的循环语句可以帮助我们实现各种重复操作和迭代逻辑。本篇博客将深入讨论 Go 语言的循环语句帮助您掌握循环的使用技巧和注意事项。

一、程序的流程结构

程序的流程控制结构一共有三种顺序结构选择结构循环结构。

顺序结构代码从上向下逐行的执行

选择结构条件满足某些代码才会被执行。0-1次

​ if语句switch语句

循环结构条件满足某些代码会被反复的多次执行。0-n次

​ for语句

二、循环语句

循环语句表示条件满足可以反复的执行某段代码。

在 Go 语言中有三种主要的循环语句

  1. for 循环for 循环用于重复执行一个代码块可以根据条件进行控制。Go 语言提供了多种 for 循环的形式包括

    • for 初始化语句; 条件语句; 后续语句 { 代码块 }经典的 for 循环形式。
    • for 条件语句 { 代码块 }类似于其他语言的 while 循环只有条件语句没有初始化和后续语句。
    • for { 代码块 }类似于其他语言的无限循环没有条件语句会一直执行代码块直到遇到 breakreturn 才会退出循环。
  2. while 循环Go 语言没有专门的 while 关键字但可以使用 for 循环来模拟 while 循环只需要省略初始化语句和后续语句即可例如

    for 条件语句 {
        // 代码块
    }
    
  3. range 循环range 循环用于遍历数组、切片、字符串、映射等可迭代对象的元素。它返回每个元素的索引和值。例如

    for 索引, 值 := range 可迭代对象 {
        // 代码块
    }
    

    注意如果只关心值而不需要索引可以使用下划线 _ 来忽略索引变量。

这些循环语句可以根据不同的需求选择合适的形式来使用。

今天主要介绍for循环, range 后面章节再学习!

2.1 for语句

语法结构

for init; condition; post { }

初始化语句只执行一次。在初始化循环之后将检查该条件。如果条件计算为true那么{}中的循环体将被执行然后是post语句。post语句将在循环的每次成功迭代之后执行。在执行post语句之后该条件将被重新检查。如果它是正确的循环将继续执行否则循环终止。

示例代码

package main

import "fmt"
/*
	for循环某些代码会被多次的执行
	语法
		for 表达式1表达式2表达式3{
			循环体
		}
*/
func main() {
	// 快捷键fori
	for i := 0; i < 6; i++ {
		fmt.Println("Hello Go ! wx: libin9iOak  ")
		fmt.Printf(" %d  ", i)
	}
}


在for循环中声明的变量仅在循环范围内可用。因此i不能在外部访问循环。

在这里插入图片描述

2.2 for循环变体

所有的三个组成部分即初始化、条件和post都是可选的。

for condition { }

效果与while相似

for { }

效果与for(; 一样

代码案例:


package main

import "fmt"

func main() {
	/*
	1. 标准写法
		for 表达式1;表达式2;表达式3{
			循环体
		}
	2.同时省略表达式1和表达式3
		for 表达式2{

		}
	相当于while(条件)
	3.同时省略3个表达式
		for{

		}
	相当于while(true)
	注意点当for循环中省略了表达式2就相当于直接作用在了true上

	4.其他的写法for循环中同时省略几个表达式都可以。。
		省略表达式1
		省略表达式2循环永远成立-->死循环
		省略表达式3
	 */
	i := 1
	for i <= 5 {
		fmt.Println(i)
		i++
	}
	fmt.Println("-->",i)

	fmt.Println("------------")
	for{
		fmt.Println("i--->",i)
		i++
	}
}

在这里插入图片描述

for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环

for key, value := range oldMap {
    newMap[key] = value
}
package main

import "fmt"

func main() {

   var b int = 15
   var a int

   numbers := [6]int{1, 2, 3, 5} 

   /* for 循环 */
   for a := 0; a < 10; a++ {
      fmt.Printf("a 的值为: %d\n", a)
   }

   for a < b {
      a++
      fmt.Printf("a 的值为: %d\n", a)
      }

   for i,x:= range numbers {
      fmt.Printf("第 %d 位 x 的值 = %d\n", i,x)
   }   
}

运行结果

a 的值为: 0
a 的值为: 1
a 的值为: 2
a 的值为: 3
a 的值为: 4
a 的值为: 5
a 的值为: 6
a 的值为: 7
a 的值为: 8
a 的值为: 9
a 的值为: 1
a 的值为: 2
a 的值为: 3
a 的值为: 4
a 的值为: 5
a 的值为: 6
a 的值为: 7
a 的值为: 8
a 的值为: 9
a 的值为: 10
a 的值为: 11
a 的值为: 12
a 的值为: 13
a 的值为: 14
a 的值为: 15
第 0 位 x 的值 = 1
第 1 位 x 的值 = 2
第 2 位 x 的值 = 3
第 3 位 x 的值 = 5
第 4 位 x 的值 = 0
第 5 位 x 的值 = 0

2.2 多层for循环

for循环中又有循环嵌套就表示多层循环了。


package main

import "fmt"

func main() {
	for i := 1; i <= 3; i++ {
		for j := 1; j <= 3; j++ {
			fmt.Printf("i: %d, j: %d\n", i, j)
		}
	}
}


在这里插入图片描述

三、跳出循环的语句

1、 break语句

break跳出循环体。break语句用于在结束其正常执行之前突然终止for循环

示例代码

package main

import (  
    "fmt"
)

func main() {  
    for i := 1; i <= 10; i++ {
        if i > 5 {
            break //loop is terminated if i > 5
        }
        fmt.Printf("%d ", i)
    }
    fmt.Printf("\nline after for loop")
}

2、continue语句

continue跳出一次循环。continue语句用于跳过for循环的当前迭代。在continue语句后面的for循环中的所有代码将不会在当前迭代中执行。循环将继续到下一个迭代。

示例代码

package main

import (  
    "fmt"
)

func main() {  
    for i := 1; i <= 10; i++ {
        if i%2 == 0 {
            continue
        }
        fmt.Printf("%d ", i)
    }
}

四、goto语句

goto可以无条件地转移到过程中指定的行。

语法结构

goto label;
..
..
label: statement;

在这里插入图片描述

package main

import "fmt"

func main() {
   /* 定义局部变量 */
   var a int = 10

   /* 循环 */
   LOOP: for a < 20 {
      if a == 15 {
         /* 跳过迭代 */
         a = a + 1
         goto LOOP
      }
      fmt.Printf("a的值为 : %d\n", a)
      a++     
   }  
}

下面是一个简单的 Go 语言代码示例展示了如何使用 goto 语句

package main

import "fmt"

func main() {
	i := 0

loop:
	if i < 5 {
		fmt.Println(i)
		i++
		goto loop
	}

	fmt.Println("Loop finished")
}

在上述示例中我们使用 goto 语句实现了一个简单的循环。初始时我们将 i 的值设置为 0。然后我们使用 loop 标签标记了一个代码块的位置。

if 语句中我们检查 i 的值是否小于 5。如果满足条件就打印 i 的值然后将 i 递增并使用 goto 语句跳转到 loop 标签所在的代码块。

这样每次循环迭代时会打印当前的 i 值然后通过 goto 跳转回 loop 标签继续下一次迭代直到 i 的值不再小于 5。

最终当 i 的值达到 5 时不满足 if 语句的条件循环结束程序会打印出 “Loop finished”。

需要注意的是尽管 goto 语句可以用于控制流但在实际开发中应尽量避免使用它以免导致代码难以理解和维护。通常结构化的控制流语句如 forifswitch 等更易于理解和维护。

统一错误处理
多处错误处理存在代码重复时是非常棘手的例如

		err := firstCheckError()
    if err != nil {
        goto onExit
    }
    err = secondCheckError()
    if err != nil {
        goto onExit
    }
    fmt.Println("done")
    return
onExit:
    fmt.Println(err)
    exitProcess()



拓展

除了基本的 for 循环和循环控制语句Go 语言还提供了其他强大的控制结构和语法特性。例如range 关键字可以用于迭代数组、切片、字符串、映射等数据结构。此外通过使用标签和 goto 语句我们可以在需要的时候灵活地控制程序的流程。在今后的学习过程中您还将了解更多关于 Go 语言的高级特性和技术。

今日学习总结

通过本篇博客我们深入学习了 Go 语言中的循环语句。我们了解了 for 循环的基本语法和用法并学习了循环的变体和多层循环的实现。同时我们还探讨了跳出循环的语句包括 break 和 continue以及介绍了 goto 语句的使用。这些内容为我们理解和掌握 Go 语言中的循环提供了坚实的基础。在今后的学习和实践中我们将能够更好地运用循环语句来解决实际问题并进一步提升我们的编程能力。

在这里插入图片描述

结语

通过今天的学习您已经踏上了Golang的学习之旅。在未来的日子里您将探索Golang的各个方面从基础概念到高级技巧从实际应用到性能优化。
学习一门编程语言是一个持续的过程每一天都是您向Golang的精通迈进的重要一步。我鼓励您坚持每天学习保持热情和好奇心解决挑战并享受成功的喜悦。

在您的学习旅程中不要忘记参与社区和与其他Golang开发者交流。分享您的见解和经验向他人学习并在开源项目或实际应用中展示您的技能。

如果您在学习过程中遇到困难或有任何问题不要犹豫向社区和专家寻求帮助。持续学习勇敢探索您将在Golang领域取得令人瞩目的成就。

最后感谢您的阅读和支持祝愿您在未来的每一天中都能够成为一名精通Golang的开发者

期待听到您在学习过程中的进展和成就。如果您需要进一步的帮助请随时告诉我。祝您在学习Golang的旅程中取得巨大成功

如果您在学习过程中有任何疑惑请点击下方名片带您一对一快速入门 Go语言 的世界 ~

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: go

“100天精通Golang(基础入门篇)——第9天:Go语言程序的循环语句” 的相关文章