zoukankan      html  css  js  c++  java
  • 9.1Go之分支结构和循环结构

    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 ", 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!!!
  • 相关阅读:
    CSU1661: Query Mutiple
    U磁盘检测和大量收集量产工具
    DBMS_RLS包实现数据库表中的行级安全控制
    vim note(4)
    android 时间对话框 TimePickerDialog简介
    手动露天广场和立方体
    将JDBC ResultSet结果集变成List
    PS CS5如何在一张图片里插入另一张图片?
    图文教您轻松学会用PS设计制作名片
    常用颜色的RGB值
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15232411.html
Copyright © 2011-2022 走看看