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")
	}
}
相关推荐
独泪了无痕4 小时前
Spring Data Redis 快速上手
spring boot·redis·后端
m0_639906948 小时前
Linux 操作系统入门:目录结构、服务排查常用命令、Shell 脚本基础
linux·运维·后端
holly就是我9 小时前
AI 编程助手为什么跑偏?用开源 ccglass 看清 Prompt、工具调用和 Token 消耗
人工智能·后端
鸿蒙开发9 小时前
共享 Schema 与 SchemaFactory
前端·后端·harmonyos
用户788477316349 小时前
小程序后端三选一:云开发、.NET WebAPI、Node,我按客户现状分了三种答案
后端
aiopencode9 小时前
局域网设备抓包怎么做?用 TraceEagle 抓电视、游戏机和 IoT 流量
后端·ios
智驭未来掌门人9 小时前
CLion 开发 Qt 项目的优势
后端
EnCi Zheng9 小时前
后端怎么把AI接口稳定安全低成本接进业务:超时重试、密钥隔离与成本熔断清单
人工智能·后端·安全·架构·api
Bazingga9 小时前
从一家酒店讲懂Docker
后端
南归北隐9 小时前
Spring AI Alibaba Graph框架实现MCP数据库查询实战
java·后端·spring ai·mcp·spring ai mcp