像所有语言的一样,go语言也提供了关键字实现选择,if else switch
switch语句的用法
switch {
case n < 0:
fmt.Println("n < 0")
case n > 0:
fmt.Println("n > 0")
default:
fmt.Println("=0")
}
上述代码中,无论满足哪个case 条件,都不需要break,这与java不同,但可以使用default语句,
go语言的循环只提供了for关键字,没有while等其他关键字,因为for完全可以替代while,这一点符合go语言简洁的风格。for循环是编程中最常见的循环,我们可以通过变量控制循环的次数
for i := 0; i < 100 ;i ++ {
}
循环一共会执行100次,当达到100时循环结束。i的作用域是这个for循环,我们可以在大括号内使用i,如果要在100次循环完成前结束循环,可以用break,如果仅仅是结束本次循环代码块内上虞的代码然后继续开始下一次循环,可以用continue
go语言没有提供while关键词,那我们如果使用for 来实现while的功能呢?for {}
即直接写for 就相当于while,如果需要结束循环,在for代码块内使用判断break就可以
如果需要模仿do...while,可以使用另一种方式
for ok:= ture ;ok;ok=expression { }一旦expression返回值为false,则循环结束
这样while可以做到的完全可以使用for来代替了
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
if i%2 == 0 {
continue
}
fmt.Println(i, "")
}// 取奇数
fmt.Println()
i := 5
for {
if i < 1 {
break
}
fmt.Print(i, " ")
i--
} //递减
fmt.Println()
arr := []int{1, 2, 3, 4, 5}
for i, v := range arr {
fmt.Println("index:", i, "value:", v)
}
}// 遍历数组
go语言的垃圾回收也是自动实现的,本节将介绍go语言的垃圾自动回收功能,所谓垃圾回收,就是释放那些不会再使用的程序所占的空间,比如已经没有引用的变量,垃圾回收过程是go程序并发执行的
很多语言都有垃圾回收机制,java python,对应的垃圾回收策略也有不同,比较著名的垃圾回收机制有引用计数,分代收集,标记清除。go语言的垃圾回收机制是三色标记算法。