go学习part4

流程控制和循环

1.单if

(1).基础语法

1)条件表达式用空格隔开和加括号都可以,见代码。和if之间强制有空格,如果没有括号的话。

2)大括号一定不能丢

package main

import "fmt"


func main(){
	var count = 29
	/*if(count > 29){
		count --
	}else if(count == 29){
		count ++
	}*/

	if count > 29{
		count --
	}else if(count == 29){
		count ++
	}
	fmt.Println(count)
}

(2)可以在if后面自定义变量,但作用域仅限于{}内部

定义和判断用分号间隔开

package main

import "fmt"


func main(){
	//可以在if后面自定义变量,但作用域仅限于里面
	if age := 18;age >= 18{
		age++
		fmt.Println(age)
	}
	//fmt.Println(age)
	
}

2. if else双分支

注意else和{不能单独放一行,必须跟在上一个}后面

package main

import "fmt"

//if else

func main() {
	var count = 29
	//带空格的条件表达式
	if count > 29 {
		count--
	}else{
		count++
	}
	fmt.Println(count)

}

2. if else if多分支

package main

import "fmt"

//if else if  else


func main() {
	var count = 29

	if(count > 29 && count != 0){
		count --
	}else if(count == 29 || count == 0){
		count ++
	}else{

	}
	fmt.Println(count)

}

3.switch

package main

import "fmt"

//switch

func main() {
	var score = 66
	//自上而下进行匹配
	//case分支自带break,匹配执行完就退出,不需要像cpp自己加break
	switch score / 10 {
	case 10,11,12:
		fmt.Println(10)
	case 9:
		fmt.Println(9)
	case 8:
		fmt.Println(8)
	default: //default可以放在任意地方,但是一般在首部或者尾部
		fmt.Println("error")
	case 7:
		fmt.Println(7)
	}

}

(1)default可以放在任意地方,但是一般在首部或者尾部

(2)case分支自带break,匹配执行完就退出,不需要像cpp自己加break

(3)case后面可以跟多个值,比如case 1,2,3: xxxx

(4)case后面匹配的数据类型必须和表达式数据类型一致 

(5)swicth可以不带表达式,然后在case后面加判断表达式 

 (6)switch后面定义变量(同if)用分号分割

(7)fallthrough穿透

如果匹配到当前case,那么执行到 fallthrough会继续执行下一个case的语句。相当于cpp的switch case结尾不用break

4.for

package main

import "fmt"

//for
func main() {
	var count = 0
	/*for i := 1; i <= 5; i++ {
		count++
	}
	*/
	//拆开写法
	i := 1
	for i <= 5 {
		count++
		i++
	}
	fmt.Println(count)
}

常规写法类似cpp,也可以把变量定义提到外面去,自增放到{}里,去掉分号简化

5.break

可以在for中使用,switch中隐含自带。

break默认打破当前循环,通过加label可以控制打破到哪里。

package main

import "fmt"

//for
func main() {
	var count = 0
	//break默认打破当前循环
	//通过加label可以控制打破到哪里
label2:
	for i := 1; i <= 5; i++ {
		//label1:
		for j := 1; j <= 5; j++ {
			count++
			fmt.Println("i=",i,"j=",j)
			if(i == 2 && j == 2){
				break label2 //跳到label2之后
			}
				
		}

	}

	fmt.Println(count)
}

6.continue

可以跳到label

package main

import "fmt"

//continue
func main() {
	//continue
	//通过加label可以控制打破到哪里
label:
	for i := 1; i <= 5; i++ {
		for j := 1; j <= 5; j++ {
			if i != 1 && j != 2 {
				continue label
			}
			fmt.Println("i=", i, "j=", j)
		}
	}

}

7.goto

 8.return

结束当前函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值