Go语言支持最基本的三种程序结构

  • 顺序结构
  • 选择结构
  • 循环结构

选择结构

if语句

Go语言中的if语句是没有括号的

代码演示如下

	var a int = 3  // 因为a == 3 所以说只会输出3
	if a == 3 {
		fmt.Println("a == 3") 
	}

	if a == 4 {
		fmt.Println("a == 4")
	}

此外Go语言的if语句还支持一个初始化表达式

始化表达式和条件表达式之间要用分号隔开

if b:=3 ; b == 3{ // 初始化表达式和条件表达式之间要用分号隔开 

Go语言和C++中if语句的差别主要是有两点

  • Go语言中的if elseif等后面条件不加括号
  • Go语言的大括号禁止换行

代码表示如下

	// test if ... else ...
	var a int = 5
	if a == 3 {
		fmt.Println("a == 3")
	}else if a == 4 {
		fmt.Println("a == 4")
	}else {
		fmt.Println("a != 3")
	}

switch语句

Go语言的switch语句和C++中的switch语句不同的是 Go语言中的case语句后面默认带着break 所以说我们不用像C++一样后面加上break了

代码示例如下

	// test switch case 
	var score int = 90
	switch score{
	case 90:
		fmt.Println("优秀")
	case 80:
		fmt.Println("良好")
	case 70 , 60 , 50 :
		fmt.Println("一般")
	default:
		fmt.Println("差")
	}

如果我们想要强制执行后面的代码 只需要在执行语句后面加上一个 fallthrough 即可

	// test switch case 
	var score int = 90
	switch score{
	case 90:
		fmt.Println("优秀")
		fallthrough
	case 80:
		fmt.Println("良好")
	case 70 , 60 , 50 :
		fmt.Println("一般")
	default:
		fmt.Println("差")
	}

如果我们不指定switch的变量 我们还可以使用条件表达式来case 比如说

	var score int = 90
	switch  { // 不switch变量
	case score >= 90:
		fmt.Println("优秀")
	default:
		fmt.Println("差")
	}

循环结构

**这里需要注意的是 go语言没有while循环 **

for循环

for循环和C++的唯一区别就是不加括号

代码示例如下

func test5()  {
	var sum int = 0 
	var i int = 0
	for i = 0; i < 10; i++{
		sum += i
	}

	fmt.Println(sum)
}

这里值得注意的一点是 go语言中不允许int a = 10 这种写法

range

在Go语言中 我们可以使用range来遍历一个字符串或数组等

关键字range会返回给我们两个值 一个是下标 一个是元素的值

如果说我们只用一个参数接受返回值的话 那么默认就是接受下标

	var str string = "abcde" 

	for _ , i := range str { // 舍弃掉下表 只需要stirng中的值
		fmt.Printf("%c\n" , i)
	}

跳转语句

Go语言的跳转语句有三个

  • break
  • continue
  • goto

break是跳出当前循环 它在循环语句中都可以使用 而continue只能在for循环中使用

goto的用法也和我们C++的用法一样 但是我们不建议使用goto 这会导致执行流乱跳的情况

11-16 20:24