1、for循环
func main() { sum := 0 for i := 0;i<10 ;i++ { sum += i } fmt.Print(sum) }
和java的for循环类似,只不过go的这个for循环没有括号,下面是java的for循环对比
public void test5(){ int sum = 0; for (int i =0;i<10;i++){ sum +=i; } }
go的for循环包含三个:
- 初始化语句:在第一次迭代前执行
- 条件表达式:在每次迭代前求值
- 后置语句:在每次迭代的结尾执行
package main import "fmt" func main() { sum := 1 for ; sum < 1000; { sum += sum } fmt.Println(sum) }
这是go的for循环升级版,上面提到的初始化语句和后置语句是可选的。这个时候我们可以更加简化他,把分号也去掉,如下:
package main import "fmt" func main() { sum := 1 for sum < 1000 { sum += sum } fmt.Println(sum) }
2、if条件语句
func getMax(a,b int) int { if a>b { return a }else if b>a { return b } else { return 0 } }
go的if else和java也不一样,一样是if 后面没有括号,else if 后面也没有括号
3、switch语句
func getOne(i int) { switch i { case 0: fmt.Println("数据结果为0的数据") case 1: fmt.Println("数据类型为1的属性") default: fmt.Println("都没有") } } func main() { getOne(7) }
switch从上到下运行,匹配则结束,没有直接使用default的值
4、defer函数
defer 语句会将函数推迟到外层函数返回之后执行,推迟调用的函数其参数会立即求值,但直到外层函数返回前该函数都不会被调用
func main() { defer fmt.Println("嘻嘻") fmt.Println("哈哈") }
结果为:
推迟的函数调用会被压入一个栈中。当外层函数返回时,被推迟的函数会按照后进先出的顺序调用
请发表评论