zoukankan      html  css  js  c++  java
  • Go语言 流程控制

    If / else分支判断

    if condition1 {
    
    
    }
    
    if condition1 {
        
    } else {
    
    }
    
    if condition1 {
        
    } else if condition2 {
    
    } else if condition3 {
    } else {
    }  

    练习

    package main
    import “fmt”
    func main() {
        bool1 := true
        if bool1 {
            fmt.Printf(“The value is true
    ”)
        } else {
            fmt.Printf(“The value is false
    ”)
        }
    }  

    练习

    // 写一个程序, 从终端读取输入, 并转成整数. 如果转成整数出错,
    // 则输出'can not convert to int', 并返回.否则输出该整数
    
    package main
    
    import (
        "fmt"
        "strconv"
    )
    
    func main() {
        var s string
        fmt.Scanf("%s", &s)
        res, err := strconv.Atoi(s)
        if err != nil {
            fmt.Println("can not convert to int.err: ", err)
            return
        }
        fmt.Println(res)
    
    }
    

    switch case语句

    写法1

    switch var {
    case var1:
    case var2:
    case var3:
    default:
    }
    

    写法2

    var i = 0
    switch i {
    case 0:
    case 1:
          fmt.Println(“1”)
    case 2:
        fmt.Println(“2”)
    default:
         fmt.Println(“def”)
    }
    

    写法3

    fallthrough:Go里面switch默认相当于每个case最后带有break,匹配成功后不会自动向下执行其他case,而是跳出整个switch, 但是可以使用fallthrough强制执行下面的的case代码。

    var i = 0
    switch i {
    case 0:
            fallthrough
    case 1:
          fmt.Println(“1”)
    case 2:
    fmt.Println(“2”)
    default:
         fmt.Println(“def”)
    }
    

      

    写法4

    var i = 0
    switch i {
    case 0, 1:
          fmt.Println(“1”)
    case 2:
    fmt.Println(“2”)
    default:
         fmt.Println(“def”)
    }
    

    写法5

    var i = 0
    switch {
    condition1:
          fmt.Println(“i > 0 and i < 10”)
    condition2:
    fmt.Println(“i > 10 and i < 20”)
    default:
         fmt.Println(“def”)
    }
    
    
    
    var i = 0
    switch {
    case i > 0 && i < 10:
          fmt.Println(“i > 0 and i < 10”)
    case i > 10 && i < 20:
    fmt.Println(“i > 10 and i < 20”)
    default:
         fmt.Println(“def”)
    }
    

      

    写法6

    switch i := 0 {
    case i > 0 && i < 10:
          fmt.Println(“i > 0 and i < 10”)
    case i > 10 && i < 20:
    fmt.Println(“i > 10 and i < 20”)
    default:
         fmt.Println(“def”)
    }
    

     

    for 语句

    写法1

    for 初始化语句; 条件判断; 变量修改 {
    }
    
    for i := 0 ; i < 100; i++ {
    fmt.Printf(“i=%d
    ”, i)
    }
    

    写法2

    for  条件 {
    }
    
    
    for i > 0 {
          fmt.Println(“i > 0”)
    }
    
    for true {
          fmt.Println(“i > 0”)
    }
    
    for {
          fmt.Println(“i > 0”)
    }
    

    写法3

    for range 语句        用来遍历数组、slice、map、chan

    str := “hello world,中国”
    for i, v := range str {
         fmt.Printf(“index[%d] val[%c] len[%d]
    ”, i, v, len([]byte(v)))
    } 

     

    写法4

    break continue语句

    str := “hello world,中国”
    for i, v := range str {
           if i > 2 {
                 continue
           }
      if (i > 3) {
             break  }
         fmt.Printf(“index[%d] val[%c] len[%d]
    ”, i, v, len([]byte(v)))
    }
    

    写法5

    goto 和 label 语句

    package main
    import "fmt"
    func main() {
    LABEL1:
    	for i := 0; i <= 5; i++ {
    		for j := 0; j <= 5; j++ {
    			if j == 4 {
    				continue LABEL1
    			}
    			fmt.Printf("i is: %d, and j is: %d
    ", i, j)
    		}
    	}
    }


      

    package main
    
    func main() {
    	i := 0
    HERE:
    	print(i)
    	i++
    	if i == 5 {
    		return
    	}
    	goto HERE
    }
    

      

    练习

    i := 0for {
          if i >= 3 { 
       break 
       }
    
          fmt.Println(“”, i)
          i++;
    }
    
    
    
    for i := 0; i<7 ; i++ {       if i%2 == 0 { 
                 continue 
            } 
             fmt.Println(i)
    } 
    

      

     

    I can feel you forgetting me。。 有一种默契叫做我不理你,你就不理我

  • 相关阅读:
    使用Fiddler模拟客户端http响应
    Vim显示行号
    Convert int to byte array
    bare linefeeds received in ASCII mode
    Memory Analyse Tool
    what is the difference between static and normal variables in c++
    Looper Could not create wake pip
    Convert Java Doc to CHM using jd2chm
    ARM(RISC)和x86(CISC)的技术差异
    处理器架构——从RISC与CISC到x86、ARM、MIPS
  • 原文地址:https://www.cnblogs.com/weidaijie/p/11428242.html
Copyright © 2011-2022 走看看