找回密码
 立即注册
首页 资源区 代码 Golang基础笔记六之流程控制

Golang基础笔记六之流程控制

秤陷曲 2025-9-26 11:52:53
本文首发于公众号:Hunter后端
原文链接:Golang基础笔记六之流程控制
本篇笔记介绍 Golang 里流程控制相关的一些语法,以下是本篇笔记目录:

  • 条件语句
  • 循环语句
1、条件语句

1. if-else 语句

if-else 语句的基本语法如下:
  1. if condition {
  2. }else if condition {
  3. }else {
  4. }
复制代码
下面是一个示例:
  1. num := 10
  2. if num <= 5 {
  3.     fmt.Println("num 小于等于 5")
  4. } else if num > 5 && num <= 10 {
  5.     fmt.Println("num 大于 5 小于等于 10")
  6. } else {
  7.     fmt.Println("num 大于 10")
  8. }
复制代码
2. 类型 switch

类型 switch 用于根据变量的类型来执行不同的代码块,通常用于处理接口类型的变量,接口相关的内容后面再介绍,这里先直接使用,使用方式和前面的 switch 类似:
  1. if num := 10; num <= 5 {
  2.     fmt.Println("num 小于等于 5")
  3. } else if num > 5 && num <= 10 {
  4.     fmt.Println("num 大于 5 小于等于 10")
  5. } else {
  6.     fmt.Println("num 大于 10")
  7. }
复制代码
2、循环语句

循环语句就是 for 循环操作了,这里介绍几种类型:
1. for 循环

for 循环的用法和其他语言的类似,比如从 0 循环到 4:
  1. day := 4
  2. switch day {
  3. case 1, 2, 3, 4, 5:
  4.     fmt.Println("工作日")
  5. case 6:
  6.     fmt.Println("星期六")
  7. case 7:
  8.     fmt.Println("星期日")
  9. default:
  10.     fmt.Println("非法星期数")
  11. }
复制代码
2. for-range 循环

for-range 循环可用于数组、切片、字符串、map 等可迭代对象,循环的参数又两个,分别是索引和对应的元素。
这里逐个介绍其示例:
1) 数组/切片

数组或者切片的示例如下:
  1. score := 80
  2. switch {
  3. case score >= 90:
  4.     fmt.Println("优秀")
  5. case score >= 80:
  6.     fmt.Println("良好")
  7. case score >= 70:
  8.     fmt.Println("一般")
  9. default:
  10.     fmt.Println("差劲")
  11. }
复制代码
前面的 index 是索引下标,value 是下标对应的值。
如果不需要 index 或者 value,直接置为 "_" 即可:
  1. func printType(i interface{}) {
  2.     switch v := i.(type) {
  3.     case int:
  4.         fmt.Printf("%v 是整数类型\n", v)
  5.     case string:
  6.         fmt.Printf("%v 是字符串类型\n", v)
  7.     default:
  8.         fmt.Printf("%v 是其他类型\n", v)
  9.     }
  10. }
  11. func main() {
  12.     num := 10
  13.     str := "hello"
  14.     printType(num)
  15.     printType(str)
  16. }
复制代码
2) 字符串

对字符串是用 for-range 返回的索引是字节索引:
  1. for i := 0; i < 5; i++ {
  2.     fmt.Printf("i:%v\n", i)
  3. }
复制代码
而如果字符串中包含中文,Go 能够将其自动解码,且返回中文字符开始的字节索引位置:
  1. s := []string{"a", "b", "c"}
  2. for index, value := range s {
  3.     fmt.Printf("index: %v, value: %v\n", index, value)
  4. }
复制代码
3) map

对 map 使用 for-range 操作会迭代其 key-value:
  1. s := []string{"a", "b", "c"}
  2. for _, value := range s {
  3.     fmt.Printf("value: %v\n", value)
  4. }
复制代码
3. 无限循环

对于前面的 for 循环,如果我们不设置任何条件,就可以实现一个无限循环,可以在内部通过 continue 和 break 来控制进入下一次循环或者退出循环。
以下是一个示例:
  1. s := "hello world"
  2. for index, char := range s {
  3.     fmt.Printf("index:%d, char:%c\n", index, char)
  4. }
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册