zoukankan      html  css  js  c++  java
  • go之for循环

    一、基于计数器的迭代

    • 格式
    for 初始化语句; 条件语句; 修饰语句{}
    
    
    • 实例
    package main
    
    import "fmt"
    
    func main(){
    	for i:=0;i<10;i++{
    		fmt.Print(i)
    	}
    	fmt.Println()
    	/*
    	执行步骤:
    	    1、 初始化,条件判断,条件成立执行循环体,不成立结束for循环
    	    2、条件成立执行循环体,i++,条件判断
    	    3、条件成立执行循环体,i++,条件判断
    	    4、...
    	    5、条件不成立结束循环体
    	*/
    	
    	// 求 100 以内偶数之和
    	var sum int = 0
    	for i:=0;i <= 100;i++{
    		if i%2 == 0{  // 取余为0 则为偶
    			sum += i
    		}
    	}
    	fmt.Println(sum)
    
    	// 99乘法表
    	for i:=1;i<10;i++{
    		for j:=1 ;j<=i;j++{
    			fmt.Printf("%d * %d = %d ",j,i,j*i)
    		}
    		fmt.Println("")
    	}
    }
    
    

    0123456789

    
    

    二、基于条件判断的迭代

    • 格式
    for 条件语句{}
    
    
    • 实例
    package main
    
    import "fmt"
    
    func main(){
    	// 求 100以内 奇数之和
    	var sum,i int // 多相同类型变量声明
    	i = 0
    	for i<=100{
    		if i % 2 != 0{
    			sum += i
    		}
    		i++
    	}
    	fmt.Println(sum)
    
    
    	// 也可以这样
    	var sum1,j int
    	j = 0
    	for true{ // 条件永远为 true
    		if j % 2 != 0{
    			sum1 += j
    		}
    		j++
    		if j > 100{
    			break // 中断当前循环,或跳出当前循环体
    		}
    	}
    	fmt.Println(sum1)
    }
    
    

    三、无限循环

    • 格式
    for{}
    // 与 for true {},行为是一样的
    // 
    
    • 实例
    package main
    
    import "fmt"
    
    func main(){
    	// 输入内容并打印在终端
    	var content string
    	for {
    		fmt.Print("请输入内容:")
    		fmt.Scanf("%s
    ",&content) // &content 是content的内存地址
    		fmt.Println("你输入的内容是:",content)
    	}
    }
    
    

    四、for-range语法

    • 格式
      这是 Go 特有的一种的迭代结构,您会发现它在许多情况下都非常有用。它可以迭代任何一个集合(包括数组和 map,详见第 7 和 8 章)。语法上很类似其它语言中 foreach 语句,但您依旧可以获得每次迭代所对应的索引
    for ix, val := range coll { }
    
    • 实例
    package main
    
    import (
    	"fmt"
    )
    
    func main(){
    	str := "jmz is good man"
    	for index,v := range str{
    		// v 是 rune 类型,所以需要转化成string 类型
    		fmt.Println(index , " - " , string(v))
    	}
    
    	str1:= "from 中国"
    	for _,v := range str1{ // _ 省略 第一个返回参数
    		fmt.Println(v, " - ", string(v))
    	}
    
    	// 关于rune类型  一个字符串是unicode编码的字符。
    	// 下面的结果处理与上面的一样
    	value := []rune(str1) // 切片类型 ,将str1 转成切片类型
    	i := 0
    	for i<len(value){
    		fmt.Println(string(value[i]))
    		i++
    	}
    }
    
    • 统计字符中相同字符的个数
    package main
    
    import "fmt"
    
    func main(){
    	str := "上海自来水来自海上,are you know?hahahah"
    	count := make(map[string]int) // map 类型(引用类型)
    	/*
    	// count := make(map[string]int) 相当于:
    	var count map[string]int
    	count = make(map[string]int)
    	// 后面会着重讲解
    	 */
    	for _,v := range str{
    		count[string(v)] += 1 // 将rune 转化成string :   string(v)
    	}
    	for k,v := range count{ // map 类型也可以for-range
    		fmt.Println(k," - ",v)
    	}
    }
    
    

    五、Break 与 continue

    • 解释
    break: 跳出当前循环体(结束循环体)
    continue: 跳过本次循环,进入下一次循环
    
    • 实例
    package main
    
    import "fmt"
    
    func main(){
    	for i:= 0;i<10;i++{
    		if i == 3{
    			continue
    		}
    		if i == 6{
    			break
    		}
    		fmt.Println(i)
    	}
    }
    
    
    输出结果:
    0
    1
    2
    4
    5
    

    猜猜结果

    • 猜猜一
    for i:=0;i<10;i++{
        var j int
        fmt.Println(j)
        j = 5
    }
    

    10个0,j 是局部变量,每次循环都会重新声明,初始值,所以每次都是0

    • 猜猜二
    for i:=0;;i++{
        fmt.Println(i)
    }
    

    无限循环,一直累加

    • 猜猜三
    for i:=0;i<10;{
        fmt.Println(i)
    }
    

    无限循环,都是0,没有累加

    • 猜猜四
    	for i,j:=2,10;i<j;{
    		fmt.Println(i," - ",j)
    		i *= 2
    		j ++
    	}
    
  • 相关阅读:
    React Native商城项目实战08
    React Native商城项目实战07
    React Native商城项目实战05
    React Native商城项目实战06
    React Native商城项目实战04
    React Native商城项目实战03
    React Native商城项目实战02
    单选框input:radio
    myDate97用法
    STRUTS2配置动态页面
  • 原文地址:https://www.cnblogs.com/xiaobaiskill/p/10595334.html
Copyright © 2011-2022 走看看