go语言循环语句

简介: go语言循环语句

今天说一下go语言的循环条件



(一)重点放在前面说


  • Go语言没有while循环条件,只有for循环,但是for循环可以充当while循环




(二)Go语言for循环语法


①一般for循环


语法:
  for 赋值语句;循环条件;循环变量{}


打印99乘法表(与c语言,c++一样)
  mystr := "%d*%d=%d\t"
  for i := 1; i < 10; i++ {
    for j := 1; j <= i; j++ {
      tempstr := fmt.Sprintf(mystr, j, i, j*i)//这一句时将数据格式化写入mystr内
      fmt.Print(tempstr)//打印格式化好的字符串
    }
    fmt.Println()
  }


②可以充当while循环的for循环


语法:
  for 循环条件{}


打印99乘法表(与while循环没两样)
  mystr := "%d*%d=%d\t"
  j, i := 1, 1
  for i < 10 {
    j = 1
    for j <= i {
      tempstr := fmt.Sprintf(mystr, j, i, j*i)//这一句时将数据格式化写入mystr内
      fmt.Print(tempstr)//打印格式化好的字符串
      j++
    }
    fmt.Println()
    i++
  }


③对可迭代对象进行循环遍历


语法:
  for key,value :=range 可迭代对象{}
该方法在以后最为常用,其中key,value可以使用 _ 空白字符进行忽略,只得到键或值


打印99乘法表
  //以下一句是数组直接初始化的方法,在以后还会提到
  myarray := [9]int{1, 2, 3, 4, 5, 6, 7, 8, 9}
  for _, v := range myarray {
    l := 1
    for l <= v {
      fmt.Printf("%d*%d=%d\t", l, v, l*v)
      l++
    }
    fmt.Println()
  }


(三)终止、改变循环的条件




重点:语言可以在循环外面设置标签,可以跳出标签下的循环。(下面详细介绍)


①break
    默认跳出一层循环 直接在指定位置进行break
    加上标签的话跳出标签下的循环


打印1-100的笛卡尔积:
//抛出锚点(标签)
Here:
  for i := 0; i < 100; i++ {
    for j := 0; j < 100; j++ {
      fmt.Println(i, "与", j,"乘积为",i*j)
      if j == 10 {
        break Here
      }
    }
  }
-------------------------------------------------------------------------------------
因为有循环条件 
一般的break条件下应该是打印1000个数据
但是对标签进行跳出,就直接跳出了外层循环
打印结果为:(10个数据)
  0 与 0 乘积为 0
  0 与 1 乘积为 0
  0 与 2 乘积为 0
  0 与 3 乘积为 0
  0 与 4 乘积为 0
  0 与 5 乘积为 0
  0 与 6 乘积为 0
  0 与 7 乘积为 0
  0 与 8 乘积为 0
  0 与 9 乘积为 0
  0 与 10 乘积为 0
-------------------------------------------------------------------------------------


②continue


    默认跳出本次循环
    加上标签的话会跳出标签循环的语句的本次循环


打印1-100的笛卡尔积:
Here:
  for i := 0; i < 100; i++ {
    for j := 0; j < 100; j++ {
      fmt.Println(i, "与", j, "乘积为", i*j)
      if j == 10 {
        continue Here
      }
    }
  }
-------------------------------------------------------------------------------------
因为有循环条件 
一般的continue情况下应该是打印9900个数据
但是对标签进行跳过,就直接跳过了本次外层循环(相当于内置循环内有一个普通的break)
最终打印的数据只有1000个
-------------------------------------------------------------------------------------


③goto


    选定一个位置写一个锚点,执行到goto语句时跳转到指定的锚点。


使用goto打印99乘法表
  mystr := "%d*%d=%d\t"
  for i := 1; i < 10; i++ {
    j := 1
  Here:
    if j <= i {
      fmt.Print(fmt.Sprintf(mystr, j, i, i*j))
      j++
      goto Here
    } else {
      fmt.Println()
    }
  }


总的来说,go语言在循环方面引入标签这一操作,相对于其他语言来说是一大特色,但是循环时加入这种标签会让一般人(特别是其他语言转入go语言的程序员很不适应,合理的使用事半功倍,不熟悉的情况下使用后患无穷),另外goto语句会破坏代码的逻辑严密,所以介意大家以后尽少使用。


ff244446d0904604acee0741e3847893.jpg


GO GO GO !

目录
相关文章
|
1天前
|
测试技术 Go
go语言中测试工具
【10月更文挑战第22天】
8 4
|
1天前
|
SQL 关系型数据库 MySQL
go语言中数据库操作
【10月更文挑战第22天】
10 4
|
1天前
|
缓存 前端开发 中间件
go语言中Web框架
【10月更文挑战第22天】
11 4
|
4天前
|
Go
go语言的复数常量
【10月更文挑战第21天】
17 6
|
4天前
|
Go
go语言的浮点型常量
【10月更文挑战第21天】
13 4
|
4天前
|
Serverless Go
Go语言中的并发编程:从入门到精通
本文将深入探讨Go语言中并发编程的核心概念和实践,包括goroutine、channel以及sync包等。通过实例演示如何利用这些工具实现高效的并发处理,同时避免常见的陷阱和错误。
|
1天前
|
安全 测试技术 Go
Go语言中的并发编程模型解析####
在当今的软件开发领域,高效的并发处理能力是提升系统性能的关键。本文深入探讨了Go语言独特的并发编程模型——goroutines和channels,通过实例解析其工作原理、优势及最佳实践,旨在为开发者提供实用的Go语言并发编程指南。 ####
|
5天前
|
安全 网络协议 Go
Go语言网络编程
【10月更文挑战第28天】Go语言网络编程
93 65
|
5天前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
27 13
|
5天前
|
网络协议 安全 Go
Go语言的网络编程基础
【10月更文挑战第28天】Go语言的网络编程基础
22 8

相关实验场景

更多