Go语言学习笔记(四)条件控制语句

1if语句分支控制:

css 复制代码
package main

import "fmt"

func main() {
	a := 1

	b := 2

	if a > b {
		fmt.Println("a > b")
	} else if a == b {
		fmt.Println("a == b")
	} else {
		fmt.Println("a < b")
	}
}

1.1执行结果:

2.switch语句控制:

go 复制代码
package main

import "fmt"

func main() {

	tag := "h"

	switch tag {
	case "h":
		fmt.Println("我是h")
	case "m":
		fmt.Println("我是m")
	case "l":
		fmt.Println("我是l")
	default:
		fmt.Println("未知字母")
	}
}

2.1执行结果:

3:多层if嵌套demo:

go 复制代码
package main

import "fmt"

func main() {

	amount := 2

	seats := 1

	//判断余额
	if amount >= 2 {
		amount = amount - 1
		//判断座位数.
		if seats > 0 {
			fmt.Println("座位充足,请坐下")
		} else {
			fmt.Println("暂时无座,请站好")
		}
	} else {
		fmt.Println("余额不足,请充值")
	}
}

3.1多层嵌套优化:

go 复制代码
package main

import "fmt"

func main() {

	amount := 2

	seats := 1

	if amount < 2 {
		fmt.Println("余额不足,请充值")
		return
	}

	amount = amount - 1

	//判断座位数.
	if seats > 0 {
		fmt.Println("座位充足,请坐下")
	} else {
		fmt.Println("暂时无座,请站好")
	}

}

3.2提取函数优化:

go 复制代码
package main

import "fmt"

func main() {

	amount := 2

	seats := 1

	//判断余额
	if amount >= 2 {
		amount = amount - 1
		//判断座位数.
		seat(seats)
	} else {
		fmt.Println("余额不足,请充值")
	}
}

func seat(seats int) {
	if seats > 0 {
		fmt.Println("座位充足,请坐下")
	} else {
		fmt.Println("暂时无座,请站好")
	}
}

4.for循环:

go 复制代码
package main

import "fmt"

func main() {

	total := 0
	for i := 1; i <= 50; i++ {
		total += i
	}
	fmt.Println("1-50的和是:", total)
}

4.1break跳出循环:

go 复制代码
package main

import "fmt"

func main() {

	total := 0

	i := 1
	for {
		if i > 50 {
			break
		}
		total += i
		i++
	}
	fmt.Println("1-50的和是:", total)
}

5.for-range循环:

用于处理array slice string channel和map的循环.range关键字也表明了其后是一个带有范围限制的结构.

go 复制代码
package main

import "fmt"

func main() {

	arr := [3]string{"a", "b", "c"}

	for _, e := range arr {
		fmt.Println(e)
	}
}

5.1执行结果:

5.2循环打印字符串:

go 复制代码
package main

import "fmt"

func main() {

	var str = "努力学习go语言"

	for _, e := range str {
		fmt.Println(string(e))
	}

}

5.2执行结果:

6.goto关键字跳转:

goto关键字用来向上和向下跳转,不会向for或者if语句只能单向跳转.

6.1break的局限:

break可以跳出循环,但是break只能跳出当前循环.

6.2goto关键字demo:

go 复制代码
package main

import "fmt"

func main() {

	m := make(map[string][]int)

	m["a"] = []int{1, 2, 3}
	m["b"] = []int{4, 5, 6}
	m["c"] = []int{7, 8, 9}

	var result = false

	for _, v := range m {
		for _, e := range v {
			if e == 5 {
				result = true

				goto searchEnd
			}
		}
	}
searchEnd:
	fmt.Println("查找5存在的结果为:", result)
}

6.2执行结果:

7.for-range循环是否产生新变量:

go 复制代码
package main

import "fmt"

func main() {

	arr := [3]string{"a", "b", "c"}

	fmt.Printf("%p\n", &arr)


	for _, e := range arr {
		fmt.Printf("%p\n", &e)
	}

}

7.1执行结果:

从结果中可以看出产生了新的变量.

7.2再循环体中操作变量:

go 复制代码
package main

import "fmt"

func main() {

	arr := [3]string{"a", "b", "c"}

	var result []*string

	for _, e := range arr {
		result = append(result, &e)
	}

	for _, e := range result {
		fmt.Println(*e)
	}

}

7.2执行结果:

从结果可以看出和上面例子结论一样.

7.3switch-case重复合并:

go 复制代码
package main

import "fmt"

func main() {

	grade := "A"

	switch grade {
	case "A", "B", "C":
		fmt.Println("合格")
	case "D":
		fmt.Println("不合规")
	}

}

7.4switch-case布尔表达式:

go 复制代码
package main

import "fmt"

func main() {

	score := 86

	printScore(score)

}

func printScore(score int) {

	switch {
	case score >= 85:
		fmt.Println("等级A")

	case score >= 75:

		fmt.Println("等级B")

	default:

		fmt.Println("等级D")
	}
}
相关推荐
橘子星1 小时前
从零上手!Node.js 快速搭建生成式 AI 后端项目|密钥安全 + 完整可运行代码
前端·后端
砍材农夫1 小时前
物联网实战:Spring Boot MQTT | 模拟器Paho客户端sdk入门
后端
只一1 小时前
零基础搭建你的专属AI后端:从环境配置到异步魔法
后端
宸津-代码粉碎机1 小时前
Spring AI 企业级RAG实战|增量更新+文档去重+定时自动入库生产落地方案
java·大数据·人工智能·后端·python·spring
IT_陈寒1 小时前
Redis集群节点迁移把我坑惨了,这个坑你得提前绕开
前端·人工智能·后端
我是一颗柠檬2 小时前
【Redis】哨兵机制Day10
数据库·redis·后端·缓存
学编程的小程2 小时前
配置范式演进:XML、JavaConfig 与 Spring Boot
xml·spring boot·后端
码不停蹄的玄黓2 小时前
SpringBoot 循环依赖解决方案
java·spring boot·后端
枕星而眠2 小时前
Linux IO多路复用:select、poll、epoll 核心原理与进阶实战
linux·运维·服务器·c++·后端