Go学习笔记-流程控制

Go流程控制

*我们经常需要代码在满足一定条件时进行执行,或者需要重复执行代码多次,此时需要选择条件语句(if-else)或选择语句(switch case)及循环语句(for)

一. if 的语法

方式一:

if  condition1 {

}

方式二:

if condition1 {

}else {

}

方式三:

if condition1{

}else if condition2 {

}else if condition3{

}else {

}
package main

import "fmt"

func main() {
   //老婆的想法

   fmt.Println("老婆的想法")
   fmt.Println("买十个包子")
   var yes string
   fmt.Println("有卖西瓜的吗?")
   fmt.Scan(&yes)
   if yes == "Y" || yes == "y" {
      fmt.Println("买一个西瓜")
   }

   fmt.Println("老公的想法")

   if yes == "Y" || yes == "y" {
      fmt.Println("买一个包子")
   } else {
      fmt.Println("买十个包子")
   }

else-if

package main

import "fmt"

func main() {

var  score int
   fmt.Print("请输入成绩:")
   fmt.Scan(&score)

   if score >= 90 {
      fmt.Println("A")
   } else {
      if score >= 80 {
         fmt.Println("B")
      } else {
         if score <= 70 {
            fmt.Println("C")
         }
      }
   }

二. switch

package  main

import "fmt"

func main(){

   var yes string

   fmt.Print("老婆的想法:")
   fmt.Print("有卖西瓜的吗?(Y/N):")
   fmt.Scan(&yes)

   fmt.Print("老婆的想法:")
   fmt.Print("十个包子")
   switch yes {
   case "y","Y":
      fmt.Println("一个西瓜")
   }

   fmt.Println("老公的想法:")
   switch yes {
   case "y","Y":
      fmt.Println("一个包子")
   default:
      fmt.Println("十个包子")
   }
   fmt.Print("请输入你的成绩:")
   var score int
   fmt.Scan(&score)
   switch  {
   case score >= 90:
      fmt.Println("A")
   case score >= 80:
      fmt.Println("C")
   case score <=60:
      fmt.Println("D")
   }

}

三.for

package  main

import "fmt"

func main(){


   result :=0
   //初始化子语句,条件子语句, 后置子语句
   for i :=1;i<=100;i++{
      result += i
   }
     fmt.Println(result)

}

3.1 continue 与break

#continue
package main

import "fmt"

func main() {
   for  i  := 0; i < 10 ; i++{
      if i ==5{
         continue // 跳过本次循环,继续下一次
         // break  // 退出循环
      }
      fmt.Println(i)
   }

}
package main

import "fmt"

func main(){
	for i := 0; i <10; i++ {
		if  i == 5 {
			break  // 退出循环,输出结果
		}
		fmt.Println(i)
	}

}

3.2 for ……range

完成数据迭代,支持字符串、数组、数组指针、切片、字典、通道类型 ,返回索引、键值数据

package main

import "fmt"

func main() {

      s := "我爱中国"

      for  i,v := range  s {
       fmt.Printf("%d, %q\n",i,v)
     }


}
//# 生成随机数
package main

import (
   "fmt"
   "math/rand"
   "time"
)

func main() {
   rand.Seed(time.Now().Unix())  //以当前系统时间为种子
   fmt.Println(rand.Intn(100))
}

四. 冒泡排序

挨着两个元素比较

comments powered by Disqus