Go语言学习笔记 --- 控制语句之if判断,循环语句for, switch语句和跳转语句
来源:互联网 发布:淘宝详情页自动生成 编辑:程序博客网 时间:2024/06/02 18:04
学习笔记根据 无闻 go语言基础教程 整理
判断语句if
- 条件表达式没有括号
- 支持一个初始化表达式 (可以并行方式)
- 做大括号必须和条件语句或else在同一行
- 支持单行模式
- 初始化语句中的变量为block级别,同时隐藏外部同名变量
- 示例代码:
package main import ( "fmt" ) func main() { test1() test2() test3() test4() test5() } func test1() { a := 1 if a == 1 { fmt.Println("a == 1") // a == 1 } } func test2() { if b := 2; b == 2 { fmt.Println("b == 2") // b == 2 } // fmt.Println(b) // 不能直接输出,会报错 undefined:b } func test3() { if c, d := 3,4; c < d { fmt.Println("c < d") // c < d } } func test4() { e := 10 if e:=5; e < 10 { fmt.Println(e) // 5 } fmt.Println(e) // 10 } func test5() { if e:=5; e > 10 { fmt.Println("e > 10") } else { fmt.Println("e <= 10") // e <= 10 } }
循环语句for
- Go 只有for一个循环语句关键字,但支持3种形式
- 初始化和步进表达式可以是多个值
- 条件语句每次循环都会被重新检查,因此不建议在条件语句中使用函数,尽量提前计算好条件以变量或常量代替
- 左大括号必须和条件语句在同一行
- 示例代码:
package main import ( "fmt" ) func main() { test1() test2() test3() test4() } func test1() { a := 1 for { a ++ if a > 2 { break } fmt.Println(a) } fmt.Println("for-over1") /* // 最终输出 2 for-over1 */ } func test2() { b := 1 for b <= 2{ b ++ fmt.Println(b) } fmt.Println("for-over2") /* // 最终输出 2 3 for-over2 */ } func test3() { c := 1 for i:=1; i<=2; i++{ c ++ fmt.Println(c) } fmt.Println("for-over3") /* // 最终输出 2 3 for-over3 */ } func test4() { d := "string" e := 1 l := len(d) // 不要把长度计算放置于for中,每次都会重新检查,影响性能 for i:=1; i<=l; i++{ e ++ fmt.Println(e) } fmt.Println("for-over4") /* // 最终输出 2 3 4 5 6 7 for-over4 */ }
switch语句
- 可以使用任何类型或表达式作为条件语句
- 无需break, 一旦调价你符合自动终止
- 如果希望执行下一个case,需使用fallthrough语句
- 支持一个初始化表达式,可以是并行方式,右侧需跟分号
- 左大括号必须和条件语句在同一行。
- 示例代码:
package main import ( "fmt" ) func main() { // test1() // test2() test3() // test4() } // 无需break,匹配到则停止,不会存在穿透问题 func test1 () { a := 1 switch a { case 0: fmt.Println("a=0") case 1: fmt.Println("a=1") // a=1 default: fmt.Println("None") } } // switch 中没有表达式,表达式可放在case中 func test2() { a := 1 switch { case a >= 0: fmt.Println("a>=0") // a>=0 // 如果不添加fallthrough 只会匹配到此处,即使下面的匹配也不会往下执行 fallthrough // 添加fallthrough, 则会继续匹配下一个case case a >= 1: fmt.Println("a>=1") // a>=1 default: fmt.Println("None") } } // 在switch 中声明,变量范围只在switch语句块中 func test3() { switch a := 1; { case a >= 0: fmt.Println("a>=0") // a>=0 case a >= 1: fmt.Println("a>=1") default: fmt.Println("None") } }
跳转语句
- 跳转语句goto, break, continue
- 三个语法都可配合标签使用
- 标签名区分大小写,若不使用会造成编译错误
- Break 与 continue 配合标签可用于多层循环的跳出
- Goto 是调整执行位置,与其它两个语句配合标签的结果并不相同
- 实例代码:
package main import ( "fmt" ) func main() { test1() test2() test3() } // 突破无限循环 func test1 () { LABEL1: for{ for i:=0; i< 10; i++ { if i>3 { break LABEL1 // 单纯的break无法突破无限循环,加上LABEL1外层标签标识则可跳出 } fmt.Println("i:",i) } } fmt.Println("over") /* // 运行结果: i:0 i:1 i:2 i:3 over */ } // 测试goto语句 func test2() { for { for i:=0; i<10; i++ { if i>3 { goto LABEL2 } fmt.Println("i:",i) } } LABEL2: fmt.Println("over") /* i: 0 i: 1 i: 2 i: 3 over */ } // continue func test3() { LABEL1: for i:=0; i<3; i++ { // 无限循环 for { fmt.Println("i:",i) continue LABEL1 // 立马跳出无限循环 // fmt.Println(i) // 此处continue后的代码永远不会被执行 } } fmt.Println("over") /* i: 0 i: 1 i: 2 over */ }
阅读全文
0 0
- Go语言学习笔记 --- 控制语句之if判断,循环语句for, switch语句和跳转语句
- if,switch,for循环语句
- C++ Primer 学习笔记10 语句 (空语句、if语句、switch语句、for语句、dowhile语句、break语句、goto语句、continue语句、try块和异常处理)
- If 判断、switch语句和三中循环语句
- 控制流程语句之顺序语句、if判断语句、键盘录入、switch选择判断语句
- JavaScript-for循环语句,if语句,switch语句
- JAVA学习(四):Java流程控制语句(顺序结构、if条件语句、switch条件语句、循环语句与跳转语句)
- 利用for语句 + switch语句进行中奖判断和循环
- 4 Java基础语法(switch语句,循环语句(for,while),控制跳转语句(break,return,continue))
- 循环控制语句for while do-while if switch
- Java语言基础{Java_se(03)}-Fo循环-顺序结构-If语句-switch语句-循环结构-whlie循环-do_whlie循环-控制跳转语句
- 流程控制陷阱(Switch语句,标签,if语句,for循环,foreach循环的循环计数器)
- Python之if判断语句与while和for循环
- if语句和switch语句
- if语句 和switch语句
- go语言:switch语句
- Go语言switch语句
- Go 语言条件语句和循环语句
- IntelliJ IDEA使用(一):创建maven web项目
- java 根据IP地址获取地理位置
- 《Scrum实战》定义DoD
- 了解BEM
- 【HDU1872】稳定排序(sort)
- Go语言学习笔记 --- 控制语句之if判断,循环语句for, switch语句和跳转语句
- 字节流和字符流转换、标准输入流和标准输出流、打印流、对象序列化、随机流
- AngularJS – 实现基于角色访问控制的 GUI
- 代价函数 cost function
- web项目部署详细步骤
- POJ 2349(Kruskal) Arctic Network
- 字符串
- Sublime Text 3修改插件安装位置
- ASP.NET 连接数据库 增删改查简单实例