golang基础(四):条件判断、循环体、跳出循环

目录

一、条件判断

1. if

2. if, else if, else

二、循环体

1. for

2. for range

3. switch case

三、跳出循环

1. break

2. continue

3. goto


一、条件判断

1. if

if 格式有两种写法:

package main

import "fmt"

func main() {
    a := 1
	if a < 10 {
		fmt.Println("第一种写法,此时a是函数体内的变量")
	}

	if b := 1; b < 10 {
		fmt.Println("第二种写法,此时b是if中的变量")
	}
}

2. if, else if, else

package

import "fmt"

func main() {
    source := 80
	if source > 90 {
		fmt.Println("优秀")
	} else if source >= 70 {
		fmt.Println("还行")
	} else {
		fmt.Println("啥也不是")
	}
}

二、循环体

1. for

for 循环的三种写法:

package main

import "fmt"

func main() {
    // for 第一种写法
	for i := 0; i < 10; i++ {
		fmt.Print(i) // 0123456789
	}

	// for 第二种写法
	j := 0
	for ; j < 10; j++ {
		fmt.Print(j) // 0123456789
	}

	// for 第三种写法
	k := 0
	for k < 10 {
		fmt.Print(k) // 0123456789
		k++
	}
}

2. for range

package main

import "fmt"

func main() {
    var str = "你好golang"
	for key, val := range str {
		fmt.Printf("key=%v val=%c\n", key, val) // 为什么val不用%v,因为%v获取的是ascii值
		/**
		结果如下:
			key=0 val=你
			key=3 val=好
			key=6 val=g
			key=7 val=o
			key=8 val=l
			key=9 val=a
			key=10 val=n
			key=11 val=g
		*/
	}

	var arr = []string{"php", "python", "java", "golang"} // 这叫切片不叫数组
	for k, v := range arr {
		fmt.Printf("key=%v val=%v\n", k, v)
		/**
		结果如下:
			key=0 val=php
			key=1 val=python
			key=2 val=java
			key=3 val=golang
		*/
	}
}

3. switch case

基本用法:

package main

import "fmt"

func main() {
    // switch case 不加break也可以,但是为了和其他语言一致,个人建议加上
	var ext = ".js"
	switch ext {
	case ".html":
		fmt.Println("text/html")
		break
	case ".css":
		fmt.Println("text/css")
		break
	case ".js":
		fmt.Println("text/javascript")
		break
	default:
		fmt.Println("格式错误")
		break
	}
}

 对比多个值

package main

import "fmt"

func main() {
    // case可以对比多个值
	var n = 2
	switch n {
	case 1, 3, 5, 7, 9:
		fmt.Println("奇数")
		break
	case 2, 4, 6, 8, 10:
		fmt.Println("偶数")
		break
	default:
		fmt.Println("啥也不是")
		break
	}

    // 第二种写法
	switch n2 := 2; n2 {
	case 1, 3, 5, 7, 9:
		fmt.Println("奇数")
		break
	case 2, 4, 6, 8, 10:
		fmt.Println("偶数")
		break
	default:
		fmt.Println("啥也不是")
		break
	}
}

case中有表达式

package main

import "fmt"

func main() {
    // case 表达式 switch 后面不再有参数
	age := 56
	switch {
	case age < 25:
		fmt.Println("好好学习")
		break
	case age >= 25 && age <= 59:
		fmt.Println("好好工作")
		break
	case age > 60:
		fmt.Println("享受吧")
		break
	default:
		fmt.Println("输入错误")
		break
	}
}

fallthrough 循环穿透

package main

import "fmt"

func main() {
    // switch中穿透 fallthrought 符合a条件同时手动符合b条件
	a := "a"
	switch a {
	case "a":
		fmt.Println("a")
		fallthrough
	case "b":
		fmt.Println("b")
		break
	default:
		fmt.Println("default")
		break
	}
}

三、跳出循环

1. break

跳出整个循环

package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
		if i == 3 {
			break // 跳出循环
		}
		fmt.Println(i) // 0 1 2
	}

	for i := 0; i < 2; i++ {
		for j := 0; j < 10; j++ {
			if j == 2 {
				break // 跳出循环
			}
			fmt.Printf("i=%v j=%v\n", i, j) //i=0 j=0 i=0 j=1 i=1 j=0 i=1 j=1
		}
	}
}

 跳出指定标签循环

package main

import "fmt"

func main() {
label1:
	for i := 0; i < 2; i++ {
		for j := 0; j < 10; j++ {
			if j == 2 {
				break label1 // 跳出label1标签循环
			}
			fmt.Printf("i=%v j=%v\n", i, j) //i=0 j=0 i=0 j=1
		}
	}
}

2. continue

跳出本次循环

package main

import "fmt"

func main() {
    // continue 跳出本次循环
	for i := 0; i < 5; i++ {
		if i == 2 {
			continue
		}
		fmt.Println(i) // 0 1 3 4
	}

	for i := 0; i < 2; i++ {
		for j := 0; j < 4; j++ {
			if j == 2 {
				continue
			}
			fmt.Printf("i=%v j=%v\n", i, j) //i=0 j=0 i=0 j=1 i=0 j=3 i=1 j=0 i=1 j=1 i=1 j=3
		}
	}
}

 跳出本次指定标签的循环

package main

import "fmt"

func main() {
    label2:
	for i := 0; i < 2; i++ {
		for j := 0; j < 4; j++ {
			if j == 2 {
				continue label2
			}
			fmt.Printf("i=%v j=%v\n", i, j)
		}
	}
}

3. goto

跳到指定标签位置

package main

import "fmt"

func main() {
    // goto 跳到指定标签
	var n = 10

	if n > 6 {
		fmt.Println(n)
		goto label3
	}
	fmt.Println("a")
	fmt.Println("b")
label3:
	fmt.Println("c")
	fmt.Println("d") // 10 c d
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值