Golang学习笔记—流程控制

流程控制

选择结构

if

if 布尔表达式{

}

Demo1

a := 2
if a > 0 {
   fmt.Println(a)
} 

结果

2	

if语句中可以添加变量初始化语句,用分号;分割,即:

if a := 2; a > 0 {
   fmt.Println(a)
}

结果

2

注意点

go和其它语言有些小区别需要注意一下:

  • 不需要使用括号包裹布尔判断语句
  • 无论主体部分有几行,都必须要有{}
  • {必须和if或else在同一行上
  • if语句中可以添加变量初始化语句
  • 布尔判断语句只有true和false,在其他语言中非0即1,但Go中判断一个值则会报错

if-else

if 布尔表达式{

}else{

}

if-else-if

if condition1 {
    // do something 
} else if condition2 {
    // do something else    
} else {
    // catch-all or default
}

switch

switch var1 {
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}

case可以使条件表达式,并且在switch后无需加上参数

package main

import "fmt"

func main() {
   score := 90
   switch {
   case score >= 90:
      fmt.Println("优秀")
   case score >= 80 && score < 90:
      fmt.Println("良好")
   default:
      fmt.Println("及格")
   }
}

结果:

优秀

fallthrough

使用fallthrough,可以再向下执行一个case

package main

import "fmt"

func main() {
   a := 100
   switch a {
   case 100:
      fmt.Println("100")
      fallthrough
   case 200:
      fmt.Println("200")
   case 300:
      fmt.Println("300")
   }
}

结果:

100	
200

循环结构

for

for 初始化语句; 条件语句; 修饰语句 {
	循环体语句
}

Go的for条件不需要打括号

for i := 1; i <= 10; i++ {
   fmt.Printf("%v ", i)
}

结果:

1 2 3 4 5 6 7 8 9 10 

初始条件和结束条件可省略(个人感觉类似于while循环)

i := 1			//初始条件
for i <= 10 {
   fmt.Printf("%v ", i)
   i++			//结束条件
}

死循环

for {
    fmt.Printf("run.....\n")
}

for-range

Go语言中可以使用for range遍历数组、切片、字符串、map及通道(channel)。通过for range遍历的返回值有以下规律:

  • 数组、切片、字符串返回索引和值。
  • map返回键和值。
  • 通道(channel)只返回通道内的值。
var str string = "Sentiment"
for pos, char := range str {
	fmt.Printf("%d : %c \n", pos, char)
}

pos为索引,char为值

结果

0 : S 
1 : e 
2 : n 
3 : t 
4 : i 
5 : m 
6 : e 
7 : n 
8 : t 

如果只想获得索引,可以忽略第二个变量:

arr := [...]int{7, 8, 9}
for i := range arr {
	fmt.Println(i)
}

结果:

0
1
2

若只想输出值,索引处可以用_代替

arr := [...]int{7, 8, 9}
for _, i := range arr {
   fmt.Println(i)
}

结果:

7
8
9

break

break语句可以结束for、switch和select 的代码块。

break结束for循环

for i := 1; i <= 5; i++ {
   fmt.Println(i)
   if i >= 3 {
      break
   }
}

结果:

1
2
3

break可用于结束fallthrough

i := 2
switch i {
case 1:
   fmt.Println(1)
case 2:
   fmt.Println(2)
   break
   fallthrough
case 3:
   fmt.Println(3)
}

结果:

2

若不加break,则会继续执行case 3 输出3

continue

结束本次循环进入下一轮循环

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值