go语言学习(二)——流程控制

下面是go语言的流程控制

// GoStudy2 project main.go
/*go语言学习
流程控制
*/
package main

import (
	"fmt"
)

func main() {
	//if
	//v11 := -10
	fmt.Println("******************if")
	if v11 := 10; v11 < 0 { //if后面可以定义变量,用;隔开
		fmt.Println("v11 < 0")
	} else if v11 == 0 { //不能另起一行
		fmt.Println("v11 == 0")
	} else {
		fmt.Println("v11 > 0")
	} //不允许将最终的return放到if...else...中,编译不通过

	//switch
	fmt.Println("**************switch")
	v21 := 1
	switch v21 {
	case 1:
		fmt.Println("v21 is", v21)
		fmt.Println("run next")
		fallthrough //执行完这个case之后强制执行以一个case中的内容
	case 2, 3: //可以几个值放在一起
		fmt.Println("v21 is", v21)
	case 4:
		fmt.Println("v21 is", v21)
	default:
		fmt.Println("other value")
	}

	switch { //可以不带参数,相当于if...else if...else
	case v21 < 0:
		fmt.Println("v21 < 0")
	case v21 == 0:
		fmt.Println("v21 == 0")
	case v21 > 0:
		fmt.Println("v21 > 0")
	default:
	}

	//for
	fmt.Println("**********************for")
	v31 := 0
	for i := 0; i < 100; i++ { //一般循环
		v31 += i
	}
	fmt.Println(v31)

	v32 := 0
	for { //无线循环
		v32++
		if v32 > 100 {
			break
		}
	}
	fmt.Println(v32)

	v33 := []int{2, 3, 5, 7, 1}
	for i, j := 0, len(v33)-1; i < j; i, j = i+1, j-1 { //支持多重赋值;
		v33[i], v33[j] = v33[j], v33[i]
	}
	fmt.Println(v33)

OuterLoop: //标签
	for i := 0; i < 100; i++ {
		fmt.Println("out loop", i)
		for j := 0; j < 100; j++ {
			//fmt.Println("in loop", j)
			if j > 50 {
				break OuterLoop //跳出outerloop所在层的循环,这里直接跳出最外面的循环
			}
		}
	}

	//goto
	fmt.Println("**********************goto")
	v41 := true
GoToTip:
	fmt.Println("goto run")
	if v41 {
		v41 = !v41
		goto GoToTip
	}
}

  

 以上,流程控制完成

原文地址:https://www.cnblogs.com/singledigit/p/6378588.html