顺序结构的程序虽然能解决计算、输出等问题,但是不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。
1、单语句分支
if 布尔表达式 { // 注意 花括号 { 必须与表达式同行/* 在布尔表达式为 true时执行 */}

// 用于条件判断isLogin := trueif isLogin {fmt.Println("hello sgg")}
2、双分支语句
双分支语句:顾名思义就是 二条分支二选一执行! 
// 用于条件判断isLogin := trueif isLogin {fmt.Println("hello sgg")} else {fmt.Println("please you login")}
3、if 多分支语句
多分支即从比双分支更多的分支选择一支执行。 
score := 90if score > 90 {fmt.Println("成绩优秀")} else if score >= 80 {fmt.Println("成绩良好")} else if score >= 60 {fmt.Println("成绩及格")} else {fmt.Println("成绩不及格")}
不管多少条分支只能执行一条分支!
4、switch 多分支语句
switch var {case val1:...case val2:...default:...}

switch语句也是多分支选择语句,执行哪一块代码块,取决于switch后的值与哪一case值匹配成功,则执行该case后的代码块。
/*给出如下选项,并根据选项进行效果展示:输入1、2:则输出"普通攻击"输入3:则输出"超级攻击"输入4:则输出"使用道具"*/var choice intfmt.Println("请输入选择:")fmt.Scan(&choice) // 标准输入switch choice {case 1, 2: // case 后面可以跟1到多个值,支持多个条件匹配fmt.Println("普通攻击")case 3:fmt.Println("超级攻击")case 4:fmt.Println("使用道具")default:fmt.Println("输入有误")}
1. switch 比 if...else...更为简洁2. 执行效率更高。switch...case... 会生成一个跳转表来指示实际的case分支的地址,而这个跳转表的索引号与Switch变量的值是相等的。从而,switch....case...不用像if...else...那样去遍历条件分支直到命中条件,而只需访问对应索引号的表项从而到达定位分支的目的。3. 到底使用哪一个选择语句,代码环境有关,如果是范围取值,则使用 if...else...语句更为快捷;如果是确定的值,则使用 switch 是更优方案。
5、分支嵌套
嵌套最多不要超过三层。
score := 90if reflect.TypeOf(score).Name() == "int" {if score > 90 {fmt.Println("成绩优秀")} else if score >= 80 {fmt.Println("成绩良好")} else if score >= 60 {fmt.Println("成绩及格")} else {fmt.Println("成绩不及格")}}
