美文网首页
2023-10-29 流程控制

2023-10-29 流程控制

作者: 护念 | 来源:发表于2023-11-06 21:27 被阅读0次

流程控制

这部分主要是,学习go的 if / switch / for

1. if 在判断前可以做些初始化

// 这里a的初始化只对if内部有效
    if a := 12; a < 14 {
        fmt.Println("a小于14")
    }

    a := 23
    //除了可以初始化值以外 还可以打印值
    if fmt.Println("开始判断了"); a > 10 {
        fmt.Println("此时a大于10")
    }

2. for 循环基础用法

在go中没有while,都是通过for实现的

// 1. 最标准的用法
    for i := 0; i < 10; i++ {
        fmt.Println(i)
    }

    // 2. 充当while功能
    a := 10
    for a > 1 { // 只要a大于1就会一直执行
        fmt.Println(a)
        a--
    }

    // 3. 无限循环
    b := 99
    for {
        if b < 80 {
            break
        }
        fmt.Println(b)
        b--
    }

3. for 配合range做迭代器(string/map/slice/array/channel)

    str := "abc"
    // 这里可以省略第一个参数
    for i := range str {
        // 默认情况下这里是asica编码 这里用%c
        fmt.Printf("%c\n", str[i])
    }
    // a
    // b
    // c

    ss := []int{1, 2, 3, 4}
    for index, val := range ss {
        fmt.Printf("index: %d; val: %d\n", index, val)
    }
    // index: 0; val: 1
    // index: 1; val: 2
    // index: 2; val: 3
    // index: 3; val: 4

4. for range时候非引用类型(数组要注意)range时候的生效问题

arr1 := [3]int{1, 2, 3}

    for i, val := range arr1 { // 由于数组是值传递,所以在range运行中修改的arr1 不会对一开始range的数组值产生影响

        if i == 0 {
            arr1[1] = 111
            arr1[2] = 222
            fmt.Println(arr1) // 保证修改后是有效的
        }

        arr1[i] = val + 100
    }
    fmt.Println(arr1)
    // [101 102 103]

    // 如果这里是一个引用类型则会在rang时生效
    ss := []int{1, 2, 3}
    for i, val := range ss {
        if i == 0 {
            ss[1] = 111
            ss[2] = 222
            fmt.Println(ss)
        }

        ss[i] = val + 100
    }

    fmt.Println(ss)
    //[101 211 322]

5. switch用法

  • 无表达式,在每个case中判断
    score := 89  // 分数
    grade := "A" // 成绩

    switch {
    case score >= 90: // 以冒号结尾
        grade = "A" //
    case score >= 80:
        grade = "B" //
    case score >= 70:
        grade = "C" //
    default: //
        grade = "D"
    }

    fmt.Printf("我的成绩是%s\n", grade)
    // 我的成绩是B
  • 有表达式,在每个case中等值判断
package main

import "fmt"

func main() {
    checkType("abc")
    checkType(23)
}

// 这里的 x类型是 interface 任意类型的值
func checkType(x interface{}) {

    // 表达式写在switch中 只有interface才能用x.(type) 方法
    switch x.(type) {
    case nil:
        fmt.Println("这是nil")
    case string:
        fmt.Println("这是字符串")
    case bool:
        fmt.Println("这是布尔类型")
    case float32:
        fmt.Println("这是一个浮点类型")
    case int8, int16, int32, int64: // 可以是多个类型
        fmt.Println("这是一个整数类型")
    default:
        fmt.Println("这是其它类型")
    }
}

相关文章

  • 5-流程控制

    流程控制 流程 计算机执行代码的顺序就是流程 流程控制 对计算机代码执行顺序的管理就是流程控制 流程分类 流程控制...

  • 04-流程控制及while循环

    流程控制 流程: 计算机执行代码的顺序,就是流程。 流程控制: 对计算机代码执行顺序的控制,就是流程控制。 流程分...

  • JavaScript-流程控制语句

    一、if流程控制语句 二、switch流程控制语句 三、流程控制语句

  • js流程控制

    2 - 流程控制 2.1 流程控制概念 2.2 顺序流程控制 ​ 顺序结构是程序中最简单、最基本的流程控制,它...

  • 二级-2.Python流程控制

    流程控制 流程:计算机执行代码的顺序就是流程。 流程控制:对计算机代码执行顺序的管理就是流程控制。 流程控制一共分...

  • Python基础重构-1.3流程控制

    流程控制语句 流程控制语句用来实现对程序流程的选择、循环和返回等进行控制,Python中主要的流程控制包括if(判...

  • 2023-10-29

    #妙笔生花创作挑战# 支撑一份再来 暖在手心里的咖啡,并不懂膨胀的压抑,拉弯树梢拿来照亮画本的月,挂进抒情...

  • activiti学习笔记(九)RuntimeService

    RuntimeService 流程运行控制服务 启动流程及对流程数据的控制 流程实例(ProcessInstanc...

  • 【骚全带你学Java---八、流程控制语句】

    java的流程控制语句包含条件语句和循环语句 一.什么是流程控制语句? ·流程控制语句:可以控制程序的执行流程。 ...

  • 2018-11-29

    17js流程控制switch 17js流程控制switch //js流程控制swi...

网友评论

      本文标题:2023-10-29 流程控制

      本文链接:https://www.haomeiwen.com/subject/uzjmidtx.html