广州建设网站首页,免费制作购物网站,枣庄网站建设 网站设计 网站制作,做ar网站Go语言中的流程控制语句逻辑结构与其他编程语言类似#xff0c;格式有些不同。Go语言的流程控制中#xff0c;包括if、switch、for、range、goto等语句#xff0c;没有while循环。 目录
1. if 语句 2. switch语句 3. for语句
4. range语句
5. goto语句#xff08;不常用… Go语言中的流程控制语句逻辑结构与其他编程语言类似格式有些不同。Go语言的流程控制中包括if、switch、for、range、goto等语句没有while循环。 目录
1. if 语句 2. switch语句 3. for语句
4. range语句
5. goto语句不常用
6. 补充break和continue 1. if 语句 语法格式 1单分支 if 条件语句 { ... } 或者 if 变量初始化; 条件语句{ ... } 2多分支if...else 或者 if ... elseif ...else 多分支的语法格式参照简单示例。 if 语句是一种选择结构Go语言中if 判断条件的 条件表达式没有括号if 语句 支持1个初始化表达式初始化语句和条件表达式之间需要用分号分隔if 语句程序体{...} 中的左括号{ 和 if 要在同一行else 后面没有条件
简单示例
示例1单分支
package mainimport fmtfunc main() {s : 苹果//if和{就是条件条件通常就是关系运算符//if 判断条件的 条件表达式没有括号if s 橘子 { //左括号和 if 要在同一行fmt.Println(橘子不是苹果)}//if 语句 支持1个初始化语句初始化语句和判断条件以分号分隔if a : 10; a 10 { //条件为真指向{}fmt.Println(a10)}}输出结果 示例2多分支
package mainimport fmtfunc main() {//第1种写法a : 10if a 10 {fmt.Println(a 10)} else { //else后面没有条件fmt.Println(a ! 10)}//第2种写法if a : 10; a 10 {fmt.Println(a 10)} else { //else后面没有条件fmt.Println(a ! 10)}//第3种写法多分支a 8if a 10 {fmt.Println(a 10)} else if a 10 {fmt.Println(a 10)} else if a 10 {fmt.Println(a 10)} else {fmt.Println(这是不可能的)}//第4种写法多分支if a : 8; a 10 {fmt.Println(a 10)} else if a 10 {fmt.Println(a 10)} else if a 10 {fmt.Println(a 10)} else {fmt.Println(这是不可能的)}}输出结果 2. switch语句 switch语句的语法格式参照简单示例代码中的格式。 switch语句也是一种选择结构switch后面写的是变量本身switch语句中case最后可写可不写break因为Go中默认相当于每个case最后带有break匹配成功后不会自动向下执行其他case而是跳出整个switch可以使用fallthrough强制执行后面的case代码可以使用任何类型或表达式作为条件语句switch语句支持1个初始化语句初始化语句和变量本身之间需要用分号分隔如示例2switch语句后面 可以没有条件而可以把条件放在case后面如示例2case后面可以跟多个值如示例2
简单示例
1示例1
package mainimport fmtfunc main() {//num : 1var num intfmt.Printf(请按下楼层)fmt.Scan(num)switch num { //switch后面写的是变量本身case 1:fmt.Println(按下的是1楼)//break //Go语言保留了break关键字用于跳出switch语句不写默认就包含//fallthrough //不跳出switch语句后面的无条件执行case 2:fmt.Println(按下的是2楼)//break//fallthroughcase 3:fmt.Println(按下的是3楼)//break//fallthroughcase 4:fmt.Println(按下的是4楼)//break//fallthroughdefault:fmt.Println(按下的是xxx楼)}
}运行结果
不使用fallthrough的运行结果 使用fallthrough的运行结果 2示例2
package mainimport fmtfunc main() {//支持一个初始化语句初始化语句和变量本身之间需要用分号分隔switch num : 4; num { //switch后面写的是变量本身case 1:fmt.Println(按下的是1楼)case 2:fmt.Println(按下的是2楼)case 3, 4, 5:fmt.Println(按下的是yyy楼)case 6:fmt.Println(按下的是6楼)default:fmt.Println(按下的是xxx楼)}score : 85switch { //可以没有条件case score 90: //case后面可以放条件fmt.Println(优秀)case score 80: //case后面可以放条件fmt.Println(良好)case score 70: //case后面可以放条件fmt.Println(一般)default:fmt.Println(其它)}
}运行结果 3. for语句 Go中for语句格式与C/C中的 for语句格式类似其语法格式为 for 初始化条件; 判断条件; 条件变化{ } i 只有后置没有前置即Go中不存在 i只有 i
简单示例实现123...100累加运算
package mainimport fmtfunc main() {// for 初始化条件; 判断条件; 条件变化{// }//实现123...100累加运算//1) 初始化条件 i : 1//2) 判断条件是否为真i 100如果为真执行循环体如果为假跳出循环//3) 条件变化 i //4) 重复 2,3,4sum : 0for i : 1; i 100; i {sum sum i}fmt.Println(sum , sum)}运行结果 4. range语句
用于迭代。关键词range会返回两个值第一个返回值是元素的数组下标第二个返回值是元素的值。支持 string / array / slice / map。可忽略某个返回值。语法格式可参照 简单示例代码
package mainimport fmtfunc main() {str : abc/*打印每个字符*///1.传统写法通过for打印每个字符for i : 0; i len(str); i {fmt.Printf(str[%d] %c\n, i, str[i])}//2.借助range迭代打印每个元素默认返回2个值:一个是元素的值一个是元素本身for i, data : range str {fmt.Printf(str[%d] %c\n, i, data)}//2.1 丢弃第2个返回值的第一种写法for i : range str { //第2个返回值默认丢弃即返回元素的位置下标fmt.Printf(str[%d] %c\n, i, str[i])}//2.2 丢弃第2个返回值的第二种写法等价于第一种写法for i, _ : range str { //第2个返回值默认丢弃即返回元素的位置下标fmt.Printf(str[%d] %c\n, i, str[i])}}运行结果 5. goto语句不常用 语法格式 goto 标签 ... 标签 : ... goto 可以用在任何地方但是不能跨函数使用用 goto 跳转到标签 从标签处执行代码标签 必须在当前函数内定义用法参考简单示例
简单示例
1使用break
package main//import fmtfunc main() {break //break is not in a loop, switch, or select
}break运行结果 2使用continue
package main//import fmtfunc main() {//break //break is not in a loop, switch, or selectcontinue // continue is not in a loop
}continue运行结果 (3) 使用goto
package mainimport fmtfunc main() {//break //break is not in a loop, switch, or select// continue // continue is not in a loop//goto 可以用在任何地方但是不能跨函数使用fmt.Println(111111111111111111)goto End //goto是关键字 End是用户起的名字叫做标签fmt.Println(2222222222222222222)End:fmt.Println(3333333333333333333)}goto运行结果 6. 补充break和continue
break 跳出当前循环continue 跳过本次循环注意break 可用于 for、 switch、 select而continue 仅能用于for 循环。goto 可以用在任何地方但是不能跨函数使用。