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")
	}
}
相关推荐
陈随易13 分钟前
FFmpeg 9.0 发布,代号 Lei,音视频处理再升级
前端·后端·程序员
凌虚3 小时前
面向 MySQL 用户的 PostgreSQL 快速上手指南
数据库·后端·架构
IT_陈寒5 小时前
Vite静态资源引用这个坑我踩得有点疼
前端·人工智能·后端
前端开发张小七5 小时前
Java 学习笔记 · 第一课:基础语法与核心概念
java·后端
海盗12345 小时前
微软技术周报 ——2026-08-03
后端·python·microsoft·c#·.netcore
沙湖遇雨5 小时前
6. Pipeline 的生命周期
后端
青青子衿悠悠我心5 小时前
TRAE Work让财务月底对账3小时变5分钟
后端
创安电气研究所6 小时前
用TypeScript给Modbus设备做一层适配器
后端
妙码生花6 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(五十):增加管理员角色组管理
前端·后端·ai编程
妙码生花6 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(五十一):管理员和角色组的关联
前端·后端·ai编程