Golang小白自学Go——第二天控制结构(The Way To Go)

控制结构

if-else 结构:

// 形式一:
if condition{
	do something
} 

// 形式二:
if condition{
	do something
} else {
	do something
}

// 形式三:
if condition {
	do something
}else if condition{
	do something
}else{
	do something
}

左大括号 { 必须与关键字在同一行。使用else-if结构,又大括号 } 必须与关键字同行。

if 中可以包含一个初始化语句:

if init; condition {
	do something
}
a := 10
if a > 9 {
    do something
}

上面代码可以改写为下面这样:

if a:= 10; a > 9 {
	do something
}

在if中的初始化语句,只在该if中有效。

switch-case结构

// 形式一
switch var1 {
	case var11:
		...
	case var22:
		...
	default:
		...
}

// eg:
switch i {
    case 0:
    case 1:
    	f()
    default:
}

var1可以是任意类型,var11与var22则是同类型的任意值。

继续执行分支代码,可以使用关键字fallthrough。

在switch中包含初始化语句

// 形式二
switch init {
	case val1:
		...
	case val2:
		...
	default:
	
}
// eg:
switch a, b := 1, 0; {
    case a < b: t = 1
    case a = b: t = 0
    case a > b: t = -1
    default: 
}

默认switch 为true

// 形式三
switch {
	case condition:
		...
	case condition:
		...
	default:
		...
}

switch {
    case a > 0: t = 1
    case a < 0: t = 0
    default: 
}

for循环结构

// 形式一
for 初始化语句; 条件语句; 修饰语句{
	do something
}

// eg:
for i := 1; i < 10; i++ {
    fmt.Printf("Now i is %d", i)
}
// 形式二 (与c语言中while循环类似)
for 条件语句 {
    do something
}

// eg:
i := 0
for i < 10 {
    fmt.Printf("Now i is %d", i)
    i++
}

for-range循环结构

for-range可以迭代任何一个集合(数组、map),他能获得每次迭代的值和索引。

// for range 形式
for idx, val := range coll {
	do something
}

// eg:
var arr [3]int
for idx, val := range arr {
    fmt.Printf("idx:%d  val:%d", idx, val)
}

注:for-range中val是值对于索引(idx)的值拷贝。但若val是一个指针,那么会产生指针拷贝,依旧可以修改原集合中的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

West_East

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值