不做大哥好多年 不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • Langchain
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核

逍遥子

不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • Langchain
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核
  • GO基础

    • 01.GO介绍与安装
    • 02.GO基本语法
    • 03.内置运算符
    • 04.基本数据类型
    • 05.数字类型
    • 06.字符串类型
    • 07.数组
    • 08.切片
    • 09.map
    • 10.指针
    • 11.结构体
    • 12.interface接口
    • 13.循环
      • 01.if else(分支结构)
        • 1.1 if 条件判断基本写法
        • 1.2 if 条件判断特殊写法
      • 02.for(循环结构)
        • 2.1 for循环
        • 2.2 打印 0-10 所有的偶数
        • 2.3 嵌套循环
        • 2.4 模拟while循环
        • 2.5 for range(键值循环)
      • 03.switch case
        • 3.1 case一般用法
        • 3.2 case语句多个值
        • 3.3 fallthrough 语法
      • 04.break、continue、goto
        • 4.1 break跳出单循环
        • 4.2 跳出多重循环
        • 4.3 continue(继续下次循环)
        • 4.4 goto(跳转到指定标签)
    • 14.包管理工具go mod
    • 15.单元测试
    • 16.go规范
  • 面向对象

  • 并发编程

  • 常用库

  • 数据库操作

  • Beego框架

  • Beego商城

  • GIN框架

  • GIN论坛

  • 微服务

  • 设计模式

  • Go
  • GO基础
xiaonaiqiang
2021-05-19
目录

13.循环

# 01.if else(分支结构)

# 1.1 if 条件判断基本写法

package main
import (
	"fmt"
)
func main() {
	score := 65
	if score >= 90 {
		fmt.Println("A")
	} else if score > 75 {
		fmt.Println("B")
	} else {
		fmt.Println("C")
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 1.2 if 条件判断特殊写法

  • if 条件判断还有一种特殊的写法,可以在 if 表达式之前添加一个执行语句,再根据变量值进行判断
package main
import "fmt"
func main() {
	//这里的 score 是局部作用域
	if score := 56; score >= 90 {
		fmt.Println("A")
	} else if score > 75 {
		fmt.Println("B")
	}else {
		fmt.Println("C")
		fmt.Println(score) // 只能在函数内部打印 score
	}
	// fmt.Println(score) //undefined: score
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 02.for(循环结构)

# 2.1 for循环

  • 1)普通for循环
package main
import "fmt"
func main() {
	// 打印: 0 ~ 9 的数字
	for i := 0; i < 10; i++ {
		fmt.Println(i)
	}
}
1
2
3
4
5
6
7
8
  • 2)外部定义 i
package main
import "fmt"
func main() {
	i := 0
	for i < 10 {
		fmt.Println(i)
		i++
	}
}
1
2
3
4
5
6
7
8
9
  • 3)省略初始语句
package main
import "fmt"
func main() {
	i := 0
	for ; i < 10; i++ {
		fmt.Println(i)
	}
}
1
2
3
4
5
6
7
8

# 2.2 打印 0-10 所有的偶数

package main
import "fmt"
func main() {
	// 0 2 4 6 8
	for i := 0; i < 10; i++ {
		if i%2 == 0 {
			fmt.Println(i)
		}
	}
}
1
2
3
4
5
6
7
8
9
10

# 2.3 嵌套循环

package main
import "fmt"
func main() {
	for i := 1; i <= 9; i++ {
		for j := 1; j <= i; j++ {
			fmt.Printf("%vx%v=%v \t", i, j, i*j)
		}
		fmt.Println()
	}
}
/*
1x1=1
2x1=2 	2x2=4
3x1=3 	3x2=6 	3x3=9
4x1=4 	4x2=8 	4x3=12 	4x4=16
5x1=5 	5x2=10 	5x3=15 	5x4=20 	5x5=25
6x1=6 	6x2=12 	6x3=18 	6x4=24 	6x5=30 	6x6=36
7x1=7 	7x2=14 	7x3=21 	7x4=28 	7x5=35 	7x6=42 	7x7=49
8x1=8 	8x2=16 	8x3=24 	8x4=32 	8x5=40 	8x6=48 	8x7=56 	8x8=64
9x1=9 	9x2=18 	9x3=27 	9x4=36 	9x5=45 	9x6=54 	9x7=63 	9x8=72 	9x9=81
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 2.4 模拟while循环

  • Go 语言中是没有 while 语句的,我们可以通过 for 代替
package main
import "fmt"
func main() {
	k := 1
	for { // 这里也等价 for ; ; {
		if k <= 10 {
			fmt.Println("ok~~", k)
		} else {
			break   //break 就是跳出这个 for 循环
		}
		k++
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# 2.5 for range(键值循环)

package main
import "fmt"
func main() {
	str := "abc上海"
	for index, val := range str {
		fmt.Printf("索引=%d, 值=%c \n", index, val)
	}
}
/*
索引=0, 值=a
索引=1, 值=b
索引=2, 值=c
索引=3, 值=上
索引=6, 值=海
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 03.switch case

  • 使用 switch 语句可方便地对大量的值进行条件判断

# 3.1 case一般用法

package main
import "fmt"
func main() {
	score := "B"
	switch score {
		case "A":
			fmt.Println("非常棒")
		case "B":
			fmt.Println("优秀")
		case "C":
			fmt.Println("及格")
		default:
			fmt.Println("不及格")
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 3.2 case语句多个值

package main
import "fmt"
func main() {
	n := 2
	switch n {
	case 1, 3, 5, 7, 9:
		fmt.Println("奇数")
	case 2, 4, 6, 8:
		fmt.Println("偶数")
	default:
		fmt.Println(n)
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# 3.3 fallthrough 语法

  • fallthrough 语法可以执行满足条件的 case 的下一个 case,是为了兼容 C 语言中的 case 设计
package main
import "fmt"
func main() {
	s := "a"
	switch {
	case s == "a":
		fmt.Println("a")
		fallthrough
	case s == "b":
		fmt.Println("b")
	case s == "c":
		fmt.Println("c")
	default:
		fmt.Println("...")
	}
}
/*
a
b
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 04.break、continue、goto

# 4.1 break跳出单循环

package main
import "fmt"
func main() {
	k := 1
	for { // 这里也等价 for ; ; {
		if k <= 10 {
			fmt.Println("ok~~", k)
		} else {
			break   //break 就是跳出这个 for 循环
		}
		k++
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# 4.2 跳出多重循环

  • 在多重循环中,可以用标号 label 标出想 break 的循环
package main
import "fmt"
func main() {
	lable2:
	for i := 0; i < 2; i++ {
		for j := 0; j < 10; j++ {
			if j == 2 {
				break lable2
			}
			fmt.Println("i j 的值:", i, "-", j)
		}
	}
}
/*
i j 的值: 0 - 0
i j 的值: 0 - 1
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 4.3 continue(继续下次循环)

package main
import "fmt"
func main() {
	for i := 0; i < 2; i++ {
		for j := 0; j < 4; j++ {
			if j == 2 {
				continue
			}
			fmt.Println("i j 的值", i, "-", j)
		}
	}
}
/*
i j 的值 0 - 0
i j 的值 0 - 1
i j 的值 0 - 3
i j 的值 1 - 0
i j 的值 1 - 1
i j 的值 1 - 3
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 4.4 goto(跳转到指定标签)

package main
import "fmt"
func main() {
	for i := 0; i < 10; i++ {
		for j := 0; j < 10; j++ {
			if j == 2 {
				goto breakTag  // // 设置退出标签
			}
			fmt.Printf("%v-%v\n", i, j)
		}
	}
	return
	breakTag:	// 标签
		fmt.Println("结束 for 循环")
}
/*
0-0
0-1
结束 for 循环
 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
上次更新: 2024/3/13 15:35:10
12.interface接口
14.包管理工具go mod

← 12.interface接口 14.包管理工具go mod→

最近更新
01
300.整体设计
06-10
02
06.LangGraph
06-09
03
202.AI销售智能体
06-07
更多文章>
Theme by Vdoing | Copyright © 2019-2025 逍遥子 技术博客 京ICP备2021005373号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式