Go语言中流程控制

作者: ropon 分类: Go 发布时间: 2019-11-07 09:49
// if
package main
import "fmt"
func main() {
	// age := 18
	// if  表达式1 {
	// 	分支1
	// } else if 表达式2 {
	// 	分支2
	// } else {
	// 	分支3
	// }
	// if  age > 18 {
	// 	fmt.Println("年龄大于18")
	// } else if age == 18 {
	// 	fmt.Println("年龄等于18")
	// } else if age < 18 {
	// 	fmt.Println("年龄小于18")
	// } else {
	// 	fmt.Println("未知")
	// }
	if age2 :=20; age2 >18 {
		fmt.Println(age2)
		fmt.Println("成年")
		// age2 只在if代码块有效
	}
	// fmt.Println(age2)
}

//for
package main

import "fmt"

func main() {
	// for 初始语句; 条件表达式; 结束语句 {
	// 	循环体语句
	// }
	// for i := 0; i < 10; i ++ {
	// 	fmt.Println(i)
	// }
	// 初始语句可以省略,但初始语句后分号; 必须写
	// j := 0
	// for ; j < 5; j++ {
	// 	fmt.Println(j)
	// }
	// 初始语句和结束语句都可以省略 类似于其他语言中while
	h := 1
	for h < 6 {
		fmt.Println(h)
		h++
	}
	// 条件表达式省略相当于无限循环 可通过break、goto、retur、panic(抛错) 语句强制退出循环
	// for {
	// 	循环体语句
	// }
	// for range 键值循环 遍历数组、切片、字符串、map、通道(channel)
	// 数组、切片、字符串返回索引和值
	// map返回键和值
	// 通道只返回通道内的值
	aa := "sss"
	fmt.Println(aa)
}

//switch
package main

import "fmt"

func main() {
	// switch 表达式 {
	// case 值1:
	// 	分支1
	// case 值2:
	// 	分支2
	// case 值3:
	// 	分支3
	// default:
	// 	默认分支
	// }
	// 每个switch只能有一个default分支
	// 一个分支可以有多个值,用逗号分隔
	// case 值1, 值2, 值3:
	// case 后可以跟表达式
	// case a > 2:
	// fallthrough 再执行满足条件的下一个case
	a := 2
	switch a {
	case 1:
		fmt.Println("值是1")
	case 2:
		fmt.Println("值是2")
		fallthrough
	case 3:
		fmt.Println("值是3")
	default:
		fmt.Println("默认值")
	}
}

//goto break continue
package main

import "fmt"

func main() {
	// goto 通过标签进行代码间无条件跳转
	for i := 0; i < 5; i++ {
		for j := 0; j < 5; j++ {
			if i == 2 && j == 2 {
				goto breakTag
			}
			fmt.Printf("%d - %d\n", i, j)
		} 
	}
	// 定义标签
	breakTag:
		fmt.Println("2层for循环结束")
	fmt.Println("niubi")

	// break 调出循环 break可以结束for、switch、select的代码块
	// continue 继续下一次循环 只能在for循环使用

}

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!