源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Golang学习笔记(三):控制流

  • 时间:2022-09-08 14:19 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Golang学习笔记(三):控制流
控制结构分为: 条件+选择+循环 [b]IF[/b] 1.说明
[u]复制代码[/u] 代码如下:
条件表达式没有括号 支持一个初始化表达式(可以是多变量初始化语句) 初始化语句中定义的都是只能在block级别中使用的局部变量,不能在block之外使用 左大括号必须和条件语句在同一行(必须与if/else在同一行) go没有三元运算符 if判断语句条件不需要括号 在判断语句里卖弄允许声明一个变量,其作用域只在逻辑块内,其他地方不起作用 花括号一定存在,且必须与if/else在同一行
2.语法
[u]复制代码[/u] 代码如下:
//基本 if a > 0 {  //无括号      dosomething() } else if a == 0 { //必须用花括号      doothertings() } else {      donothing() } //单行模式 if a > 0 { a += 100 } else { a -= 100 }
3.示例
[u]复制代码[/u] 代码如下:
package main func main(){     a := 10     if a > 0 {         a += 100     } else if a == 0 {         a = 0     } else {         a -= 100     }     println(a)     b := 101     if b > 0 { b += 100 } else { b -= 100 }     println(b) } //支持一个初始化语句 if a:=1; a<10 { //允许在条件之前执行一个简单语句,由此语句定义的变量作用域仅在if/else范围内     return a } if a, b := 1,2; a+b == 10 { } if x := computedValue(); x > 10 { } else { }
4.结果
[u]复制代码[/u] 代码如下:
110 201
注意,在有返回值的函数中,不允许将“最终的”return语句放到if ... else ... 结构中,否则编译失败
[u]复制代码[/u] 代码如下:
func example(x int) int {     if x == 0 {         return 5     } else {         return x     } }
[b]FOR[/b] for是go的"while", 只支持for关键字.有三种形式 1.语法
[u]复制代码[/u] 代码如下:
for init; condition; post {     //init不支持逗号,只能平行赋值     //condition每次循环开始都会检查,不建议在里面使用函数,建议用计算好的变量/常量代替     //post后面必须跟花括号,每轮循环结束的时候调用 } for i:=0; i<10; i++ { } ----------------------------- for condition {     dosomething() } i:=1 for i<10 { } ----------------------------- for { //无限循环     dosomething() } for {     a++     if a > 10 {         break     } } -----------------------------
2.说明
[u]复制代码[/u] 代码如下:
a. 初始化和步进表达式可以使多个值:必须使用平行赋值     i, j:=0,len(a)-1; i<j; i,j=i+1,j-1 b.每次循环都会重新检查条件表达式
3.示例
[u]复制代码[/u] 代码如下:
package main func main(){     ss := "abcd"     for i:=0; i<len(ss); i++ {         println(ss[i])     } }
得到:
[u]复制代码[/u] 代码如下:
97 98 99 100
4.配合range for循环和保留字range一起使用,完成迭代器iterator操作 string, array, slice, map, channel都可以用range进行迭代器操作 range返回序号和值,若是不想要,可以用_
[u]复制代码[/u] 代码如下:
  for i, c := range "abc" {       fmt.Printf("s[%d] = %c\n", i, c)   }
得到
[u]复制代码[/u] 代码如下:
  s[0] = a   s[1] = b   s[2] = c
[b]SWITCH[/b] python里面没有 1.语法 支持初始化表达式
[u]复制代码[/u] 代码如下:
switch a:=5; a { //默认break,匹配成功后不会自动向下执行其他case,而是跳出整个switch     case 0:         //普通         println(a)     case 1, 2:      //多个分支,逗号分隔         println(a)     case 100:       //什么都不做     case 5:         println(a)         fallthrough   //进入后面的case 进行处理,而不是跳出block     default:         println(a)    //默认 } 注意,不需要break来明确退出一个case,一旦条件符合,自动终止,除非使用fallthough -------------- 可以不带表达式 switch sExpr {         case expr1: //sExpr和expr1必须类型一致,不限制为常量或者证书,可以用任何类型或表达式             ... } switch {     case 0 <= Num && Num <= 3:         fmt.Printf("3") }
几种形式:
[u]复制代码[/u] 代码如下:
a := 1 switch a {     case 0:         ... } a := 1 switch {     case a>=0:         ....     case a>1:         .... } switch a:=1; {     case a>=0:         ...     case a>1:         ... }
2.替代if...else if…else… 不指定switch 条件表达式(没有条件表达式,在case语句中有),或者直接为true
[u]复制代码[/u] 代码如下:
  a := 5   switch {     //两句可合并位 switch a:=5; {       case a > 1:           println("a")       case a > 2:           println("b")       default:           println("c")   }  
[b]goto break continue[/b] 均可配合标签使用(标签区分大小写,若声明了没有使用会导致编译错误) break/continue可配合标签用于多重循环跳出 goto是调整执行位置,与其他两个执行结果并不相同 1.goto 支持函数内部goto跳转 请善用 必须跳转到当前函数内定义的标签,标签名大小写敏感
[u]复制代码[/u] 代码如下:
func myFunc() {     i := 0 Here:     println(i)     i++     goto Here }
2.continue 进入下一次循环 3.break 终止循环
[u]复制代码[/u] 代码如下:
for index := 10; index > 0; index -- {     if index == 5 {         break //continue     } }
示例
[u]复制代码[/u] 代码如下:
package main func main(){     a := 1     LABEL1:         println("inc a=", a)         a += 1     LABEL2:         //println("here")     for ; a < 6; {         println(a)         if a == 3 {             a += 1             continue LABEL2         }         if a == 5 {             break         }         goto LABEL1     } }
结果:
[u]复制代码[/u] 代码如下:
inc a= 1 2 inc a= 2 3 4 inc a= 4 5
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部