💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] # for循环语句 golang 语言中循环语句只有 `for` ,不像其他编程语言还有 `while` 语句。 ## 用法一 ```go i := 0 for i <= 5 { fmt.Println(i) i++ // i = i + 1 } ``` ## 用法二(常用) ```go // 相比方法一 // 1. i变量是for循环局部变量。 // 2. i++ 语句是代码块放在最后一句 // 简写 for for i := 0; i < 5; i++ { fmt.Println(i) } // 变种一:i不是for循环局部变量 i := 0 for ; i < 5; i++ { fmt.Println(i) } // 变种二:i++ 语句不放在代码块最后一句 for i := 0; i < 5; { i++ fmt.Println(i) } ``` ## 用法三(无限循环) ```go for { fmt.Println("jiaxzeng") } ``` >[danger] 一定要加上退出语句再使用,后面会讲到 `break` 和 `goto` 语句。 ## 用法四(range) `for range` 语句通常使用在 字符串、数组、切片、map及通道(channel) 类型。 遍历返回值都是有规律的 1. 数组、切片、字符串返回索引和值。 2. map返回键和值。 3. 通道(channel)只返回通道内的值。 >[warning] for range注意点 > 1. 遍历前会拷贝一份数据被遍历,然后开始遍历数据 > 2. 遍历出来元素**地址是同一个**,并且与原来的元素地址不一致 以上的注意点可以引出 **赋值地址** 的面试题。其实for range遍历都是相同地址。那就是最后一个值。 ```go // 遍历变量 // 简写 forr name := "jiaxzeng" for i, v := range name { fmt.Printf("%d %c\n", i, v) } // 直接遍历数据 for i, v := range "jiaxzeng" { fmt.Printf("%d %c\n", i, v) } ```