Golang 学习笔记03-判断语句和循环语句

判断语句

if

中断式(卫语句)

var a int = 10
if a > 5 {
	fmt.Println("a大于5")
	return
}

switch

和 js 差不多

switch a {
case 1:
	fmt.Println("a等于1")
case 2:
	fmt.Println("a等于2")
default:
	fmt.Println("a不等于1和2")
}

满足其中一个条件就不会继续判断了

如果要继续往下走,使用fallthrough关键字

b := 23
switch {
case b <= 10:
	fmt.Println("b小于等于10")
case b > 10:
	fmt.Println("b大于10小于等于20")
	fallthrough
case b > 20:
	fmt.Println("b大于20小于等于30")
default:
	fmt.Println("b大于20")
}

逻辑符

  • &&
  • ||
  • !
//	逻辑符
if a > 5 && a < 10 {
	fmt.Println("a大于5小于10")
}
if a > 5 || a < 10 {
	fmt.Println("a大于5小于10")
}

逻辑短路

&&第一个条件如果是 false,后面的条件就不会走了

||第一个条件如果是 true,后面的条件就不会走了

循环语句

for

传统版本

也和 js 差不多

var sum int
for i := 1; i <= 100; i++ {
	sum += i
}
fmt.Println(sum)

两种死循环

for {
		fmt.Println(time.Now())
		time.Sleep(2 * time.Second)
	}
for true {
		fmt.Println(time.Now())
		time.Sleep(2 * time.Second)
	}

Go 没有 while 关键字

可以通过 for 变化而来

var sum int
var i int = 1
for i <= 100 {
	sum += i
	i++
}

do-while 模式

for {
    sum += i
    i++
    if i == 101 {
       break
    }
}

遍历切片

传统方式

var nameList []string = []string{"张三", "李四", "王五"}
// 传统方式
for i := 0; i < len(nameList); i++ {
    fmt.Println(nameList[i])
}

Go 方式,和 py 类似

for index, item := range nameList {
	fmt.Println(index, item)
}
0 张三
1 李四
2 王五

遍历 map

var nameMap = map[string]string{"name1": "张三", "name2": "李四"}
for key, value := range nameMap {
    fmt.Println(key, value)
}
name1 张三
name2 李四

练习

九九乘法表

for i := 1; i <= 9; i++ {
	for j := 1; j <= i; j++ {
		fmt.Printf("%d*%d=%d\t", i, j, i*j)
	}
	fmt.Println()
}

break 和 continue

和 py 类似,continue 跳出本次循环,break 跳出循环

for i := 1; i <= 10; i++ {
		if i%2 == 0 {
			continue
		}
		fmt.Println(i)
	}
1
3
5
7
9
for i := 1; i <= 10; i++ {
	if i%2 == 0 {
		break
	}
	fmt.Println(i)
}
1