• Go语言条件语句


    Go语言条件语句
      • if 语句
        • 语法:布尔表达式可以是多个的组合,布尔表达式可以用括号括起来,也可以不用括起来
                         if 布尔表达式{
                    /* 在布尔表达式为true时执行 */
                         }
        • 实例
          package main
          import "fmt"
          func main(){
              var a int = 10
              var b int = 50
              if a > 5 && b > 40 {
                    fmt.Printf("a 大于 5,b 大于40
          " )
              }
          }
    • if ... else语句,if嵌套语句,switch语句和其他的语言上没有差别,用法也没啥差别,可以参照上面的if语句。
    • 但是Go语言有和其他语言不同的条件语句 select 语句:select类似于用于通信的switch语句,每个case必须有通讯操作(发送or接收),select随机执行一个可运行的case,如果没有可运行的case,则会阻塞,直到有可运行的case为止,因此,一个默认的case子句是必须的。
    • 语法
            select {
                    case communication clause  :
                           statement(s);      
                    case communication clause  :
                           statement(s);
                    /* 你可以定义任意数量的 case */
                    default : /* 可选 */
                           statement(s);
            }
    • 实例
           
     package main
            import "fmt"
            func main() {
                    var c1, c2, c3 chan int
                    var i1, i2 int
                    select {
                        case i1 = <-c1:
                            fmt.Printf("received ", i1, " from c1
    ")
                        case c2 <- i2:
                            fmt.Printf("sent ", i2, " to c2
    ")
                        case i3, ok := (<-c3):  // same as: i3, ok := <-c3
                            if ok {
                                    fmt.Printf("received ", i3, " from c3
    ")
                            } else {
                                    fmt.Printf("c3 is closed
    ")
                            }
                        default:
                            fmt.Printf("no communication
    ")
                }
            }
            输出为:no communication
    关于 "<-"的用法,可以参考:https://blog.csdn.net/whatday/article/details/74453089
     
    有罪是符合人性的,但长期坚持不改就是魔鬼。
  • 相关阅读:
    SQL-修改表名,列名
    MySQL必知必会-7、数据过滤
    排序
    Leetcode题解-双指针
    MySQL必知必会-6、过滤数据
    MySQL必知必会-5、排序检索数据
    MySQL必知必会-4、检索数据
    Java容器源码分析-LinkedList
    Java容器源码分析-CopyOnWriteArrayList
    Java容器源码分析-Vector
  • 原文地址:https://www.cnblogs.com/yu-yuan/p/9635995.html
Copyright © 2020-2023  润新知