网站首页 > 技术文章 正文
for循环
- 循环:让程序多次执行相同的代码块
- for循环是Go语言中唯一一个循环结构
- for循环经典语法
先执行表达式1
执行表达式2判断是否成立,如果成立执行循环体
循环体执行完成后,执行表达式3
再次执行表达式2,判断是否成立
func main() {
for 表达式1;表达式2;表达式3{
//循环体
}
}
- for循环用得最多的地方就是遍历数组或切片等
代码示例
- 经典for循环结构中,for关键字后面有3个表达式,且每个表达式都可以省略
func main() {
for i := 0; i < 5; i++{
fmt.Println(i)
}
//等价于
j := 0
for ; j <5; {
fmt.Println(j)
j++
}
//死循环
for ;; {
fmt.Println("test")
}
}
使用for循环遍历数组
- 可以通过数组的长度判断循环结束条件遍历整个数组
func main() {
arr := [3]string{"smallming", "张", "三"}
for i := 0; i < len(arr); i++{
fmt.Println(arr[i])
}
}
- for循环遍历数组等,时常与range结合使用
range函数返回两个值,第一个是脚标,第二个是内容
func main() {
arr := [3]string{"smallming", "张", "三"}
for i, n := range arr {
//其中n=arr[i]
fmt.Println(i, n)
}
}
/*输出:
0 smallming
1 张
2 三
*/
双重for循环
- 可以在循环中执行循环,称为双重for循环
- 代码示例
func main() {
for i := 0; i <2; i++ {
for j := 0; j < 2; j++ {
fmt.Println(i, j)
}
}
}
#注意事项:
只有当子循环完全执行结束才能再次执行外侧循环,因为循环体执行完才能执行表达式3(i++部分)
冒泡排序
- 排序就是把一组数据按照特定的顺序重新排列,可以是升序,降序等
- 冒泡排序利用双重for循环把最大(小)的值移动到一侧,每次可以判断出一个数据,如果有n个数组,执行n-1次循环
- 排序代码(升序还是降序主要是看if判断是大于还是小于)
func main() {
arr := [...]int{1, 7, 3, 5}
for i := 0; i < len(arr)-1; i++ {
for j := 0; j < len(arr)-1; j++ {
if arr[j] > arr[j+1] {
arr[j], arr[j+1] = arr[j+1], arr[j]
}
}
}
fmt.Println(arr) //输出:[1 3 5 7]
}
continue、break在循环中的应用
一、continue
- continue关键字控制结束本次循环体,跳过本次,执行表达式三
func main() {
for i := 0; i < 5; i++ {
//fmt.Println("start", i)
if i == 2 || i ==3 { //跳过2和3
continue
}
fmt.Println("结束", i)
/*输出:
结束 0
结束 1
结束 4
*/
}
}
- 在双重for循环中continue默认影响最内侧循环,与最外层循环无关
func main() {
for i := 0; i < 2; i++ {
for k := 0; k < 3; k++{
if i == 1 {
continue
}
fmt.Println(i, k, "结束")
/*输出:
0 0 结束
2 0 结束
*/
}
}
}
- Go语言执行标签写法,可以通过定义标签让continue控制影响哪个for循环
func main() {
myfor: for k := 0; k <2; k++{
for i := 0; i < 3; i++ {
if i == 1 {
continue myfor
}
fmt.Println(k,i,"结束")
/*输出:i无1,i为1时,结束外侧循环
0 0 结束
1 0 结束
*/
}
}
}
二、break
break可以中断for循环,无论for循环还有几次执行,立即停止
func main() {
for i:=0; i<5; i++ {
if i == 2{
break
}
fmt.Println(i) //输出0 1 ,从2开始中断,2及以后的循环都不执行
}
}
- 在双重for循环中,break默认也影响到最近的for循环
func main() {
for i := 0; i < 2; i++ {
for j := 0; j < 2; j++ {
if j == 1 {
break
}
fmt.Println(i, j)
/*
0 0
1 0
*/
}
}
}
猜你喜欢
- 2024-11-27 用for循环写一个九九乘法表
- 2024-11-27 三菱plc编程,FOR循环指令详解
- 2024-11-27 通过几个事例,就可以说明 for...of 循环在 JS 是不可或缺
- 2024-11-27 年近半百自学Python之流程控制break和continue
- 2024-11-27 C语言程序设计(谭浩强第五版) 第5章 循环结构程序设计 习题解析答案
- 2024-11-27 C语言for循环语句使用形式总结
- 2024-11-27 C# break和continue区别
- 2024-11-27 VBA基本语法之For循环结构,都有什么含义,具体该怎么使用?
- 2024-11-27 C语言(五):for,break,continue
- 2024-11-27 C语言for循环小例子
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-