Go 代码块、影子变量和流程控制

影子变量

影子变量是什么?

在Go语言中,影子变量是内部作用域和外部作用域声明同一个名称的变量,内部作用域变量生命周期只在内部作用域不影响外部作用域。

影子变量的使用

func main() {
	v := 5
	if true {
		v := 6
		fmt.Println(v)
	}
	fmt.Println(v)
}

判断语句

判断语句-if

if语句的特性有哪些?

在Go语言中,if-else语句中声明变量,作用域只在if-else语句中。

if语句的使用

func main() {
	n := rand.Intn(10)
	if n == 0 {
		fmt.Println(n, "0")
	} else if n > 5 {
		fmt.Println(n, ">5")
	} else {
		fmt.Println(n, "n>0 && n<=5")
	}
}
func main() {
	if n := rand.Intn(10); n == 0 {
		fmt.Println(n, "0")
	} else if n > 5 {
		fmt.Println(n, ">5")
	} else {
		fmt.Println(n, "n>0 && n<=5")
	}
}

switch语句

switch特性有哪些?

在Go语言中,switch语句不对条件值有限制,并且不会连续执行case语句

switch后是变量,如何处理多个分支具有相同逻辑的情况?

在Go语言中,可以使用逗号将多个匹配的值分开。

switch不对条件值有限制?

在Go语言中,任何可以使用==比较的类型均可以在switch语句中使用。

switch语句-fallthrough关键字

fall through是什么?

在Go语言中,fall through关键字会接着执行下个case块。

switch语句-for switch语句

for-switch语句如何跳出循环?

在Go语言中,可以在for语句上加一个标签,并在break语句处使用标签。

如果你不使用标签,默认只会退出一个case分支。

循环语句

循环语句-for

标准形式

func main() {
	for i:=0;i<10;i++{
		fmt.Println(i)
	}
}

使用条件比较

func main() {
	i := 1
	for i < 100 {
		fmt.Println(i)
		i = i * 2
	}
}

无限循环

func main() {
	for {
		fmt.Println("我爱你")
	}
}

循环语句-for range循环

func main() {
	for i, v := range []int{1, 2} {
		fmt.Println(i, v)
	}
}

循环语句-for语句的标签

如何跳出双层循环?

在Go语言中,跳出双层循环可以使用for语句的标签。

func main() {
	for _, sample := range []string{"hello", "wo"} {
		var b bool
		for i, v := range sample {
			fmt.Println(i, v, string(v))
			if v == 'l' {
				b = true
				continue
			}
		}
		if b == true {
			continue
		}
	}
}
func main() {
outer:
	for _, sample := range []string{"hello", "wo"} {
		for i, v := range sample {
			fmt.Println(i, v, string(v))
			if v == 'l' {
				continue outer
			}
		}
	}
}

控制语句

控制语句-break打断循环

控制语句-continue跳出循环

控制语句-goto语句

goto语句是什么?

在Go中,goto语句指定一个指向代码行的标签,然后执行跳转到该行。

goto语句的使用场景?

我们不想执行函数的部分代码,又想执行到函数的尾部。

goto语句注意事项有哪些?

你不能在任何地方跳转。Go语言禁止跳过变量声明、跳转到内部或平行代码块。

goto禁止跳过变量声明

goto的使用场景

不使用goto解决方法

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值