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

在这里插入图片描述

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

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

    • 摘要:
    • 引言:
  • 一、程序的流程结构
  • 二、循环语句
    • 2.1 for语句
    • 2.2 for循环变体
    • 2.2 多层for循环
  • 三、跳出循环的语句
    • 1、 break语句
    • 2、continue语句
  • 四、goto语句
    • 拓展:
    • 今日学习总结:
  • 结语

摘要:

本篇博客介绍了 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不能在外部访问循环。

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

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++
	}
}

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

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)
		}
	}
}


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

三、跳出循环的语句

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;

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

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语言 的世界 ~

你可能感兴趣的:(Go,云原生,golang,开发语言,云原生,后端,go)