无限循环也能写得挺有格调的!

去语言里的循环其实挺有意思的,值得咱们再好好学一遍。把那些重复的活儿交给循环去干,这是程序员最基本的效率意识。虽然Go的循环语法看着跟C和Java差不多,但它里面藏着不少好用的小技巧。代码少写几个字,逻辑看起来就清爽多了。下面咱们就用3个例子,带你快速把这门手艺给摸透了。 第一种方式就是最像C和Java的for循环了。比如说咱们先定义一个数组,然后用for去遍历它。赋值、条件判断还有迭代这几个步骤都能在这一行代码里搞定。就像下面这段代码写的那样:nums := []int{1, 2, 3, 4, 5, 6},然后for i := 0; i < len(nums); i++就开始了,接着就把fmt.Println(i)往里面一塞就行。 第二种方式是最偷懒的写法了。当那个循环变量只看不用的时候,Go允许咱们把赋值和自增的步骤给省掉。代码马上就干净了不少。比如a, b := 1, 5这两个数定下来后,for a < b就直接开跑了,接着打印一下a,最后a++让它自己去变就行。 第三种方式是用range去迭代数组了。要是想同时拿到索引和值,或者就想直接拿值出来玩?range循环这就会直接把它们给你准备好,不用再去折腾别的变量了。比如想拿索引和值就用for index, value := range nums;如果只想取出来值看一下就用_去忽略掉索引;要是只想用索引的话,把value换成nums[i]就好啦,这样还能省掉一点性能损耗呢。 说到无限循环就更简单了。只要给一个永远是对的条件就行啦,比如for {}这个空的循环体往这儿一放,理论上它就永远也停不下来了。 当然了有时候我们也得知道怎么好好退出或者跳过某个步骤。break能让你优雅地退出整个循环,而continue能帮你跳过当前这一次循环剩下的那些语句。 咱们来看看实际的效果吧:我一开始把i定成0;for的后面放个空的大括号作为无限循环的标志;每次循环打印“死循环测试 %v”;i自己加一加;如果i超过5了就打印“满足终止条件”并且用break直接跳出循环;要是i刚好等于3呢就用continue跳过这次剩下的语句不管它了;最后再打印一句“死循环测试,第%v次跑到循环结尾”。 最后输出的结果就是这样:先是第1次跑到结尾;接着是死循环测试1;再第2次跑到结尾;又是死循环测试2;接着又是第3次跑到结尾;这回因为i等于3了就跳过了剩下的那句打印;再接着第4次跑到结尾;然后是死循环测试4;再第5次跑到结尾;然后是死循环测试5;最后满足条件了退出循环。 你看出来了吧?有了break和continue这两个法宝,就算是无限循环也能写得挺有格调的!