GO语言基础入门-循环与遍历 | 青训营笔记

94 阅读1分钟

前言

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天,其实第五届青训营已经正式开课n多天了,笔记不断更新中,都是我听完课之后的总结和平时自己的学习积累,分享出来给有需要的朋友。

本文内容

本文将涉及到Go语言基础循环的具体使用和细节。

一、Go语言基础

循环和遍历
1.练习for循环

go语言循环一般都使用for循环,和其他语言不同是它条件可加括号可不加括号。如下:

for i, n := 1, 5; i <= n; i++ {
fmt.Printf("循环第%v次\n", i)
}

也可以下面这样写

var n = 5
for i := 1; i <= n; i++ {
    fmt.Printf("循环第%v次\n", i)
}

死循环写法

i := 0
for {  // 等价于for ;;{}
    i++
fmt.Printf("这是第%v次循环\n", i)
if i == 10 {
    break
    }
}
2.练习Switch
var score int
print("请输入你的分数:")
fmt.Scanf("%v", &score)
switch score {
case 50:
fmt.Println("你的分数是50分")
case 60:
fmt.Println("你的分数是60分")
case 65, 70:
fmt.Println("你的分数是65分或者70分")
default:
fmt.Println("你的输入有误")
}
3.循环遍历方式

(1)使用for-range遍历数组

定义一个字符串型数组并赋值

var cityArray = [3]string{"北京", "上海", "深圳"}
​
for index, value := range cityArray {
•    fmt.Printf("下标是%v,值是%s\n", index, value)
}

(2)字符串的遍历

方式一:直接使用for-range遍历 方式二:用for遍历,但要处理字符长度不一的问题,如下

str := "abcde测试"
var strArray = []rune(str) //用来处理有汉字的
for i := 0; i < len(strArray); i++ {
fmt.Printf("下标是%d,值是%c\n", i, strArray[i])
}
4.break跳出循环和goto

(1)用break就近原则跳出

​
for i := 0; i < 4; i++ {
    for j := 0; j < 10; j++ {
    if j == 2 {
    break //就近原则跳出到外面一层for
    }
    fmt.Println("j=", j)
    }
}

(2)使用break跳出至指定层

label2: //标签
for i := 0; i < 4; i++ {
for j := 0; j < 10; j++ {
    if j == 2 {
        break label2 
    }
    fmt.Println("j=", j)
    }
}

上面代码指定跳出到label2即最外面一层for

(3) go 语言中也有goto

可以直接跳转到我们需要的行

fmt.Println("ok1")
    n := 30
    if n > 20 {
        goto label1 //会直接跳到ok5,不会输出ok2
    }
    fmt.Println("ok2")
label1:
    fmt.Println("ok3")
5.循环练习实例

(1)打印金字塔

n := 10 //行数
for i := 1; i <= n; i++ {
    for k := 1; k <= (n - i); k++ {
        fmt.Print(" ")
    }
    for j := 1; j <= (i*2 - 1); j++ {
    fmt.Print("*")
    }
    fmt.Println()
}

(2) 打印空心金字塔

    n := 10 //行数
    for i := 1; i <= n; i++ {
        for k := 1; k <= (n - i); k++ {
            fmt.Print(" ")
        }
        if i != 1 {
            fmt.Print("*")
        }
        for j := 1; j <= (i*2 - 3); j++ {
            if i != n {
                fmt.Print(" ")
            } else {
                fmt.Print("*")
            }
        }
        fmt.Print("*")
        fmt.Println()
    }
6.注意细节

(1) 使用for循环时,如果for后面加了小括号,则需要和左大括号{在同一行,否则报错

(2) 在Go中是不支持while和do-while用法的,只支持for和for-range。

总结

Go语言for循环集合了其他语言的优点,既有传统静态语言之美,又有新一代动态语言对于序列结构遍历的借鉴。特别是只用for关键字,让循环的编写更加简洁明了。

写在最后

本文是我的日常学习笔记,如果哪里有写错,麻烦请指出来,感谢。这里我也推荐大家多写笔记,写笔记是一个很好的习惯,可以帮助我们更好的吸收和理解学习的新知识,新的一年大家一起加油!