Go编程基础05-控制语句

指针

Go虽然保留了指针,但与其他编程语言不通的是,在Go当中不支持指针运算以及->运算符,而直接采用.选择符来操作指针目标对象的成员。

  • 操作符&取变量地址,使用*通过指针间接访问目标对象
  • 默认值为nil而不是null
package main

import "fmt"

func main() {
	a := 1
	var p *int = &a
	fmt.Println(*p)
}

递增递减语句

在Go中,++--是作为语句,而不是表达式。

package main

import "fmt"

func main() {
	a := 1
	// a = a++ ++不能作为表达式
	a++ // 而是作为单独的语句
	fmt.Println(a)
}

判断语句if

  • 条件表达式没有括号
package main

func main() {
	if a := 1; a > 1 {
		
	}
}

  • 支持一个初始化表达式(可以是并行方式)
  • 左大括号必须和条件语句或else在同一行
  • 支持单行模式
  • 初始化语句中的变量为block级别,同时隐藏外部同名变量

循环语句for

  • Go中只有循环语句关键字for
  • 初始化和步进表达式可以是多个值
  • 条件语句每次循环都会被重新检查,因此不建议在条件语句中使用函数,尽量提前计算好条件并以变量或常量代替
  • 左大括号必须和条件语句在同一行
package main

import "fmt"

func main() {
	a := 1
	// 无线循环
	for {
		a++
		if a > 3 {
			break
		}
		fmt.Println(a)
	}
	fmt.Println("Over")
	
	// 判断表达式
	for a <= 3 {
		a++
		fmt.Println(a)
	}
	
	b := "string"
	// 常见形式
	for i := 0; i < len(b) ; i++ {
		a++
		fmt.Println(a)
	}
}

选择语句switch

  • 可以使用任何类型或表达式作为条件语句
  • 不需要使用break,一旦条件符合自动终止
  • 如希望继续执行下一个case,需使用fallthrough语句
  • 支持一个初始化表达式(可以是并行方式),右侧需跟分号
  • 左大括号必须和条件语句在同一行
package main

import "fmt"

func main() {
	a := 1
	switch a {
	case 0:
		fmt.Println("a = 0")
	case 1:
		fmt.Println("a = 1")
	default:
		fmt.Println("None")
	}

	// 想继续后续判断,使用fallthrough
	switch  {
	case a >= 0:
		fmt.Println("a = 0")
	    fallthrough
	case a >= 1:
		fmt.Println("a = 1")
	default:
		fmt.Println("None")
	}

	// 支持一个初始化表达式
	switch b := 1; {
	case b >= 0:
		fmt.Println("a = 0")
		fallthrough
	case b >= 1:
		fmt.Println("a = 1")
	default:
		fmt.Println("None")
	}
}

跳转语句

goto, break, continue

  • 判断、选择、循环都可以配合标签使用
  • 标签名区分大小写,若不适用标签会造成编译错误
  • breakcontinue配合标签可用于多层循环的跳出
  • goto·是调整执行位置,与其它2个语句配合标签的结果并不相同
package main

import "fmt"

func main() {
LABLE1:
	for {
		for i := 0; i < 10; i++ {
			if i > 3 {
				break LABLE1
			}
		}
	}
	fmt.Println("跳出LABLE1")

	//  goto会跳到LABLE2继续执行死循环
LABLE2:
	for {
		for i := 0; i < 10; i++ {
			if i > 3 {
				break LABLE2
			}
		}
	}
	fmt.Println("跳出LABLE2")
	//  goto会跳出内层循环,到LABLE2继续执行死循环
LABLE3:
	for {
		for i := 0; i < 10; i++ {
			if i > 3 {
				continue LABLE3
			}
		}
	}
	fmt.Println("跳出LABLE2")

}

猜你喜欢

转载自blog.csdn.net/Loiterer_Y/article/details/83515584