栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

golang中条件、循环、控制语句

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

golang中条件、循环、控制语句

这个篇幅是学习golang入门记录,方便查找

for循环

for循环还是golang中的唯一循环语句,golang中没有while循环。

  1. for循环形式一:
for i:=0;i<10;i++ {
		fmt.Println(i)
}

这是标准的for循环格式

  1. for循环形式二
index := 0
for index < 10 {
	fmt.Println(index)
	index ++
}

或者:

index := 0
for ;index < 10; {
	fmt.Println(index)
	index ++
}

这种相当于是while(condition){}模式

  1. for循环形式三
index := 0
for  {
	fmt.Println(index)
	index ++
	if index > 10 {
		break
	}
}
  1. for循环形式四,for range
arr := [3]int{1,2,3}
for index,value :=range arr {
	fmt.Println(index,value)
}
if条件判断

golang中条件判断语句格式如下:

if condition {
    
} else if condition {
    
} else {
    
}

同时在if判断条件中可以加入变量初始化语句,用分号分隔:

if local_filed := value ; condition {
    
} else if condition {
    
} else {
    
}

golang中if语句要求:

  1. if语句的条件不需要使用括号将条件包含起来
  2. {}必须存在,及时只有一行语句
  3. { 必须在if或else的同一行
  4. 在if之后,条件之前,可以增加变量初始化语句,用分号进行分隔
switch

golang中swith一般格式如下:

switch filed_name {
    case typ1,typ2 :
        ...
    case type3,typ4 :
        ...
    default:
        ...
}

示例:

month := 3
switch month {
case 1,2,3 :
	fmt.Println("Spring")
case 4,5,6:
	fmt.Println("Summer")
case 7,8,9:
	fmt.Println("Fall")
case 10,11,12 :
	fmt.Println("Winter")
default:
	fmt.Println("error month")
}

swith也可以不指定表达式:

month := 3
	switch  {
	case month<4:
		fmt.Println("Spring")
	case month > 3 && month < 7:
		fmt.Println("Summer")
	case month >6 && month < 10:
		fmt.Println("Fall")
	case month>9 && month <13 :
		fmt.Println("Winter")
	default:
		fmt.Println("error month")
	}

这时候相当于是switch true,这时候其实用if表达式更好。

swith也可以在swith之后比倒是之前初始变量,和if一样:

	switch month := 3 ; month {
	case 1,2,3 :
		fmt.Println("Spring")
	case 4,5,6:
		fmt.Println("Summer")
	case 7,8,9:
		fmt.Println("Fall")
	case 10,11,12 :
		fmt.Println("Winter")
	default:
		fmt.Println("error month")
	}

swith中还可以在case语句里面接fallthrough,因为golang中的swich满足case语句后并不会继续向后面的case语句执行,不用增加break,如果想让当前case语句执行完,接着执行接下来的一个case语句,可以加fallthrough:

switch month := 3 ; month {
	case 1,2,3 :
		fmt.Println("Spring")
		fallthrough
	case 4,5,6:
		fmt.Println("Summer")
	case 7,8,9:
		fmt.Println("Fall")
	case 10,11,12 :
		fmt.Println("Winter")
	default:
		fmt.Println("error month")
	}

上面会打印:

Spring
Summer

select

golang中select主要是配合chan使用,用来监听channel上的数据流动。需要注意的是:

  1. select不会循环,如果需要循环,需要在select外面加for循环
  2. select中会从就绪的case中随机选择一个执行,如果没有case就绪,那么select会阻塞
  3. 一般不要在select中增加defaut默认分支,会导致空轮询
	dataChan := make(chan int)
	go func(){
		for{
			select {
				case data := <-dataChan :
					fmt.Println(data)
			}
		}
	}()
break、continue

golang中的break中break只能跳出当前一层循环,如果有多个嵌套循环层,不能跳出所有循环层,只能跳出break所在从循环层
golang中continue表示终止本次循环,开始下次循环

goto

我们知道break只能跳出当前层循环,如果我们想跳出多层循环,可以使用goto,这里golang的goto与c中类似:
一般结构如下:

...
goto label
...
label: statement
...

示例如下:

	i := 0
	for ;i<10;i++ {
		for j:=0;j<10;j++ {
			if i == 5 && j == 5 {
				goto gotoHere
			}
			fmt.Println(i,j)
		}
	}
	gotoHere:
		fmt.Println(i)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/837711.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号