本文主要是介绍跟着google工程师学Go语言(六):Golang循环,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
欢迎来到:Google资深工程师深度讲解Go语言
视频地址:Google资深工程师深度讲解Go语言 -循环for结构
基本语法要点:
- for,if 后面的条件没有括号
- if 条件里也可以定义变量
- 没有 while
- switch 不需要break, 也可以直接switch多个条件
最简单的基于计数器的迭代,基本形式为:
for 初始化语句; 条件语句; 修饰语句 {}
for 结构的第二种形式是没有头部的条件判断迭代(类似其它语言中的 while 循环),基本形式:for 条件语句 {}
条件语句是可以被省略的,如 i:=0; ; i++ 或 for { } 或 for ;; { }(;; 会在使用 gofmt 时被移除):这些循环的本质就是无限循环。最后一个形式也可以被改写为 for true { },但一般情况下都会直接写 for { }
。
如果 for 循环的头部没有条件语句,那么就会认为条件永远为 true,因此循环体内必须有相关的条件判断以确保会在某个时刻退出循环。
想要直接退出循环体,可以使用 break 语句或 return 语句直接返回。
但这两者之间有所区别,break 只是退出当前的循环体,而 return 语句提前对函数进行返回,不会执行后续的代码。
无限循环的经典应用是服务器,用于不断等待和接受新的请求。
for t, err = p.Token(); err == nil; t, err = p.Token() {
…
}
示例:test5-for.go
package mainimport ("strconv""os""bufio""fmt"
)
//转二进制
func convertToBin(n int) string {result := ""for ;n >0 ; n /= 2 {lsb := n % 2result = strconv.Itoa(lsb) + result}return result
}func sum() int {sum := 0for i :=1;i<=100 ; i++ {sum += i}return sum
}
//省略初始条件,相当于while
func printFile(filename string) {file,err := os.Open(filename)if err != nil {panic(err)}scanner := bufio.NewScanner(file)for scanner.Scan(){fmt.Println(scanner.Text())}
}
//死循环
func forever() {for {fmt.Println("abc")}
}func main() {fmt.Println(convertToBin(5), //101convertToBin(13),//)fmt.Printf("sum:%d\n",sum())printFile("abc.txt")
}
在目录下,新建文本文件:abc.txt
for-range 结构在后面会提到。
这是 Go 特有的一种的迭代结构,您会发现它在许多情况下都非常有用。它可以迭代任何一个集合(包括数组和 map,详见第 7 和 8 章)。语法上很类似其它语言中 foreach 语句,但您依旧可以获得每次迭代所对应的索引。一般形式为:
for ix, val := range coll { }
。
参考文档,Go入门指南:for结构
这篇关于跟着google工程师学Go语言(六):Golang循环的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!