zoukankan      html  css  js  c++  java
  • Go笔记-流程控制

    【if】
    if 是用于测试某个条件的语句,如果该条件(逻辑型或布尔型)成立,则会执行大括号内的代码,第一个大括号必须和if 或者else同行,否则非法
     1 // 方式1
     2 if condition {
     3      //do something
     4 }
     5 // 方式2
     6 if condition {
     7      // do something
     8 }else{
     9      // do something
    10 }
    11 // 方式3
    12 if condition1 {
    13      // do something
    14 } else if condition2 {
    15      // do something else
    16 } else {
    17      // default
    18 }
    19 // 方式4
    20 if initialization; condition{
    21      // do something
    22 }
    23 if _,ok := f1();ok{
    24     f2()
    25 }
    else-if 的嵌套不受次数限制,若有多个,建议将可能性大的放在前面
    在方式4中的初始化语句中,建议声明变量,避免变量作用域带来的问题
     
    【switch】
     1 // 方式1  变量值的匹配
     2 switch var1 {
     3     case val1:
     4         ...
     5     case val2:
     6         ...
     7     default:
     8         ...
     9 }
    10 switch i{
    11     case 10:
    12         f1()
    13     case 20:
    14         f2()
    15     defaul:
    16         f3()
    17 }
    18  
    19 // 方式2 变量判断类似if
    20 switch {
    21     case condition1:
    22         ...
    23     case condition2:
    24         ...
    25     default:
    26         ...        
    27 }
    28 switch{
    29     case i<10:
    30         f1()
    31     case i>10:
    32         f2()
    33     defalt:
    34         f3()
    35 }
    36 // 方式3 包含变量声明初始化
    37 switch initialization {
    38     case val1:
    39         ...
    40     case val2:
    41         ...
    42     default:
    43         ...
    44 }
    45 switch result := calculate();{
    46     case result > 0:
    47         f1()
    48     case result < 0:
    49         f2()
    50     default:
    51         f3()
    52 }
    备注:
        Go中的switch不需要break来跳出,自动会跳出控制,如果想不跳出控制的话,就在case后面添加fallthrough,这样就会自动执行这个case后面的case【case i>0:fallthrough】
     
     
    【for】
     1 //for 初始化语句;条件语句;修饰语句{}
     2 for i := 0;i < 10; i++{
     3     fmt.Println(i)
     4 }
     5 // for 条件语句{}
     6 i := 0
     7 for i<100{
     8     fmt.Println(i)
     9     i++
    10 }
    11 // for ix,val := range coll{}
    12 for key,val := range str{
    13     fmt.Printf("index: %d value: %s",key,val)
    14 }
     
     
    【标签与goto】(在程序设计中不建议使用,这个在C中被诟病很久,但是Go语言的设计者为什么...)
    标签的名称大小写敏感,为了提高可读性,建议使用大写字母
     1 page main
     2  
     3 func main(){
     4     i := 0
     5     HERE:
     6         fmt.Println(i)
     7         i++
     8         if i == 5{
     9             return
    10         }
    11         goto HERE
    12 }
     
    标签定义了要使用,和变量是一样的,这是Go语言的原则之一,程序中不允许出现不使用的代码。
     
     学习参考处:https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/directory.md
  • 相关阅读:
    分布式基础学习(1)--分布式文件系统
    吞吐量(Throughput)、QPS、并发数、响应时间(RT)对系统性能的影响
    单点登录SSO的实现原理
    Java基础学习总结——Java对象的序列化和反序列化
    谈谈Memcached与Redis
    Java并发集合的实现原理
    Head First 设计模式 第4章工厂模式
    CentOS Linux 系统 英文 改中文
    Red Hat 9.0 Linux 分辨率修改
    Head First 设计模式 第5章 单例模式
  • 原文地址:https://www.cnblogs.com/ymkfnuiwgij/p/7863004.html
Copyright © 2011-2022 走看看