嵌套循环可以让你在一个循环内部再嵌套另一个或多个循环。这种结构在处理多维数据(如二维数组、矩阵)或需要遍历多个集合时非常有用。
for 初始化语句1; 条件判断1; 更新语句1 {
// 外层循环体
for 初始化语句2; 条件判断2; 更新语句2 {
// 内层循环体
// 执行一些操作
}
// 内层循环结束后执行的代码(可选)
}
// 外层循环结束后执行的代码(可选)
案例
统计三个公司的安全成绩情况,每个公司有4名员工,算出每个公司的平均成绩,以及每个公司的及格人数,80分以上为及格,代码如下: 用了二维数组存放信息
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
const companies = 3
const employ = 4
scores := make([][]int, companies)
for i := range scores {
scores[i] = make([]int, employ)
}
reader := bufio.NewReader(os.Stdin)
for company := 0; company < companies; company++ {
fmt.Printf("请输入第%d个公司的员工成绩(共 %d 名员工):\n", company+1, employ)
for employee := 0; employee < employ; employee++ {
fmt.Printf("员工 %d 的成绩: ", employee+1)
input, _ := reader.ReadString('\n')
trimmedInput := strings.TrimSpace(input)
score, err := strconv.Atoi(trimmedInput)
if err != nil {
fmt.Printf("输入错误,无法将字符串 '%s' 转换为整数。错误:%v\n", input[:len(input)-1], err)
return
}
scores[company][employee] = score
}
}
for company := 0; company < companies; company++ {
totalScore := 0
passingCount := 0
for _, score := range scores[company] {
totalScore += score
if score >= 80 {
passingCount++
}
}
avgScore := float64(totalScore) / float64(employ)
fmt.Printf("第 %d 个公司的平均成绩是:%.2f,及格人数是:%d\n", company+1, avgScore, passingCount)
}
}
99乘法表
package main
import (
"fmt"
)
func main() {
var num int = 9
for i := 1; i <= num; i++ {
for j := 1; j <= i; j++ {
fmt.Printf("%v * %v = %v \t", j, i, j*i)
}
fmt.Println()
}
}