go for循环

栏目: Go · 发布时间: 5年前

内容简介:1、循环条件是返回一个布尔值的表达式2、 for 循环的第二种使用方式示例:
  • 快速入门
for i := 1; i <= 10; i++ {
        fmt.Println(i)
    }
  • 流程图

    go for循环

for循环注意事项和细节

1、循环条件是返回一个布尔值的表达式

2、 for 循环的第二种使用方式

for 循环判断条件 { //循环执行语句
      }
    //将变量初始化和变量迭代写到其它位置

示例:

j := 1
    for j <= 10 {
        fmt.Println("hello....", j)
        j++
    }

3、 for 循环的第三种使用方式

for {
    //循环语句
}

等价: for ; ; { } 是个无限循环,需要配合 break 语句来用

示例:

k := 1
    for { //等价 for ; ; { }
        if k <= 10 {
            fmt.Println("ok...", k)
        } else {
            break //跳出循环
        }
        k++
    }

3、Golang 供 for-range 的方式,可以方便遍历 字符串和数组 (注: 数组的遍历,我们放到讲数组 的时候再讲解) ,案例说明如何遍历字符串。

  • 字符串遍历方式 1-传统方式
var str string = "hello,steven qin"
    for i := 0; i < len(str); i++ {
        fmt.Printf("%c \n", str[i])
    }
  • for-range 方式
var str string = "abc~defg"
    for index, val := range str {
        fmt.Printf("index=%d , val=%c \n", index, val)
    }

细节讨论

1、 如果我们的 字符串含有中文 ,那么传统的遍历字符串方式,就是错误,会出现乱码。原因是传统的对字符串的遍历是按照字节来遍历,而 一个汉字在 utf8 编码是对应 3 个字节

  • 如何解决 需要要将 str 转成 []rune 切片.=> 体验一把
var str string = "hello,steven qin!哈哈"
    str2 := []rune(str) //转为切片类型
    for i := 0; i < len(str2); i++ {
        fmt.Printf("%c \n", str2[i])
    }

2、 for-range方法不受影响

var str string = "abc~defg,哈哈"
    for index, val := range str {
        fmt.Printf("index=%d , val=%c \n", index, val)
    }

练习

1、打印 1~100 之间所有是 9 的倍数的整数的个数及总和

func main() {
    var max uint64 = 100
    var count uint64 = 0
    var sum uint64 = 0
    var i uint64 = 1 //i的类型要和max一致
    for ; i <= max; i++ {
        if i%9 == 0 {
            count++
            sum += i
        }
    }
    fmt.Printf("count=%v sum=%v\n", count, sum) //%v为值的默认格式表示
}

2、练习2

var n int = 10
    for i := 0; i <= n; i++ {
        fmt.Printf("%v + %v = %v\n", i, n-i, n)
    }

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Java解惑

Java解惑

(美)布洛克·加夫特 / 陈昊鹏 / 人民邮电出版社 / 2010-11-22 / 49.00元

你认为自己了解Java多少?你是个爱琢磨的代码侦探吗?你是否曾经花费数天时间去追踪一个由Java或其类库的陷阱和缺陷而导致的bug?你喜欢智力测验吗?本书正好适合你! Bloch和Gafter继承了Effective Java一书的传统,深入研究了Java编程语言及其核心类库的细微之处。本书特写了95个噩梦般的谜题,中间穿插着许多有趣的视觉幻象,寓教于乐。任何具备Java知识的人都可以理解这......一起来看看 《Java解惑》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器