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)
    }

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

查看所有标签

猜你喜欢:

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

Node.js:来一打 C++ 扩展

Node.js:来一打 C++ 扩展

死月 / 电子工业出版社 / 2018-6-1 / 109

Node.js 作为近几年新兴的一种编程运行时,托 V8 引擎的福,在作为后端服务时有比较高的运行效率,在很多场景下对于我们的日常开发足够用了。不过,它还为开发者开了一个使用C++ 开发 Node.js 原生扩展的口子,让开发者进行项目开发时有了更多的选择。 《Node.js:来一打 C++ 扩展》以 Chrome V8 的知识作为基础,配合 GYP 的一些内容,将教会大家如何使用 Node......一起来看看 《Node.js:来一打 C++ 扩展》 这本书的介绍吧!

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

HTML 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码

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

在线XML、JSON转换工具