9.1Go之分支结构和循环结构
Go的分支结构的特点
特点:
- 
Go的分支和其他语言的分支并没有什么两样 
if variable {
    
}
/**/
if {
    
}else if{
    
}else{
    
}
测试某个条件(布尔型或逻辑型)的语句,根据条件结果执行代码块里面的语句
特殊写法
特点:
将返回值与判断放在一行进行处理,而且返回值的作用范围被限制在 if、else 语句组合中。
示例:
package main
import "fmt"
func big(arr, brr int) bool {
    if (arr - brr) > 0 {
        return true
    }else {
        return false
    }
}
func main() {
    if err := big(3, 5); err != false {
        fmt.Println(true)
        return
    }else {
        fmt.Println(false)
        return
    }
}
代码分析:
- 
big是一个带有返回值的函数,err:=big() 是一个语句,执行 Connect 后,将结果保存到 err 变量中。 
- 
err != false 是 if 的判断表达式,当 err 不为空时,打印错误并返回。 
函数的变量作用域
变量的作用范围越小,所造成的问题可能性越小,每一个变量代表一个状态,有状态的地方,状态就会被修改,函数的局部变量只会影响一个函数的执行,但全局变量可能会影响所有代码的执行状态
限制变量的作用范围对代码的稳定性有很大的帮助
Go语言循环结构特点
特点:
- 
Go语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构,关键字 for 的基本使用方法与 C语言和C++中非常接近
常用的两种形式:
常规形式:
for i := 0; i < 10; i++ {
    
}
死循环形式:(相当于while(true))
for {
    
}
for i := 0;;i++ {
    
}
打印99乘法表
package main
import "fmt"
func main() {
    /*处理第几行*/
    for y := 1; y <= 9; y++ {
        /*每一行生成多少列*/
        for x := 1; x <= y; x++ {
            //打印结果
            fmt.Printf("%d*%d=%d\t", y, x, y*x)
        }
        //生成回车
        fmt.Println()
    }
}
Go语言之key-value循环
- 
for range 是Go语言特有的一种的迭代结构,for range 可以遍历数组、切片、字符串、map 及通道(channel),for range 语法上类似于其它语言中的 foreach 语句 
这里面涉及到了一个匿名变量的概念(使用"_"代替变量)
package main
import "fmt"
func main() {
    /*声明一个映射*/
    practice := map[string]string{
        "name":"Jun",
        "littleName":"JunkingBoy",
    }
    for j,k := range practice {
        fmt.Println(j, k)
    }
    /*
        for j,_ := range practice {
        fmt.Println(j)
    }
    */
}
特点:
- 
for range为集合中对应索引的值拷贝,因此它一般只具有只读性质,对它所做的任何修改都不会影响到集合中原有的值
遍历通道(channel):
package main
import "fmt"
func main() {
    /*声明一个通道,放如整型数据*/
    c := make(chan int)
    go func() {
        c <- 1
        c <- 2
        c <- 3
        close(c)
    }()
    /*循环输出通道的值*/
    for value := range c {
        fmt.Println(value)
    }
}
使用匿名变量只获得切片中的value而不是index:
package main
import "fmt"
func main() {
    /*声明一个数组*/
    var num [10]int
    /*循环添加值*/
    for i := 0; i < len(num); i++ {
        num[i] = (i+1)
    }
    /*循环打印出数组的value*/
    for _, value := range num {
        fmt.Println("Value is :", value)
    }
}
    It's a lonely road!!!
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号