golang学习系列——13. 控制结构

目录

总览

1. if else

示例

初始化判断

2. switch 结构

示例

初始化判断

3. for 循环结构

4. 关键字

1. break

2. continue

3. 标签与 goto


总览

条件分支结构

  • if-else 结构
  • switch 结构
  • select 结构

循环迭代结构

for (range) 结构

关键字

break
continue
return
goto + 标签

1. if else

示例

//单条件单分支
if condition {
	// do something	
}

//单条件双分支
if condition {
	// do something	
} else {
	// do something	
}

//多条件多分支
if condition1 {
	// do something	
} else if condition2 {
	// do something else
} else if condition3 {
	// do something else	
} else {
	// catch-all or default
}

初始化判断

if initialization; condition {
	// do something
}

initialization 中用简短方式 := 声明的变量的作用域只存在于 if else 结构中(在 if 结构的大括号之间,如果使用 if-else 结构则在 else 代码块中变量也会存在)

2. switch 结构

示例

switch var1 {
	case val1:
		...
	case val2:
		...
	default:
		...
}

1.变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值;或者最终结果为相同类型的表达式。

2.和c/c++等不一样, 不需要手动添加 break.

3.可以使用 fallthrough 强制执行下一个分支, 不会判断下一条 case 的表达式结果是否为 true

初始化判断

switch initialization {
	case val1:
		...
	case val2:
		...
	default:
		...
}

3. for 循环结构

//for 初始化语句; 条件语句; 修饰语句 {}
for i := 0; i < 5; i++ {
	fmt.Printf("This is the %d iteration\n", i)
} 

//for 条件语句 {}
i := 1
for i <= 5 {
	fmt.Printf("This is the %d iteration\n", i)
} 

//无限循环
for {
    ...
}

//for ix, val := range coll { }
for pos, char := range str {
    ...
}

range 中 val 始终为集合中对应索引的值拷贝,因此它一般只具有只读性质,对它所做的任何修改都不会影响到集合中原有的值.如果 val 为指针,则会产生指针的拷贝,依旧可以修改集合中的原值

4. 关键字

1. break

跳出循环,示例如下

for {
    ...
    if condition {
    break
    }
    ...
}

//break 后从这里开始执行

2. continue

只能被用于 for 循环中, 继续下一个循环, 示例如下

for i := 0; i < 10; i++ {
    if i == 5 {
        continue
    }
    print(i)
    print(" ")
}

continue 忽略剩余的循环体而直接进入下一次循环的过程,执行之前依旧需要满足循环的判断条件。

3. 标签与 goto

for、switch 或 select 语句都可以配合标签(label)形式的标识符使用,即某一行第一个以冒号(:)结尾的单词 (gofmt 会将后续代码自动移至下一行)

标签的名称是大小写敏感的,为了提升可读性,一般建议使用全部大写字母

使用标签和 goto 语句是不被鼓励的:它们会很快导致非常糟糕的程序设计,而且总有更加可读的替代方案来实现相同的需求。

func testGoto() {
    ...
    if condition {
        goto TARGET
    }
    ...
TARGET:  
    ...
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值