首页 > 电脑常识 > 区块链

后端实习の准备:小白从零学习Go语言第四天

admin 区块链 2021-04-26 16:00:40 go   golang   编程语言  
后台-系统设置-扩展变量-手机广告位-内容正文底部

后端实习の准备:小白从零学习Go语言第四天

  • 往期链接
  • Day4
    • 4.1 位运算符
    • 4.2 运算符优先级
    • 4.3 条件语句 if
    • 4.4 条件语句 switch


往期链接

小白从零学习Go语言第二天

小白从零学习Go语言第三天


Day4

4.1 位运算符

  • 位运算符对整数在内存中的二进制位进行操作。
pqp & qp|qp ^ q00000010111111010011
  • & 按位与运算符&是双目运算符。 其功能是参与运算的两数各对应的二进位相与。
  • | 按位或运算符|是双目运算符。 其功能是参与运算的两数各对应的二进位相或。
  • ^ 按位异或运算符^是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。
  • << 左移运算符<<是双目运算符。左移n位就是乘以2的n次方。 其功能把<<左边的运算数的各二进位全部左移若干位,由<<右边的数指定移动的位数,高位丢弃,低位补0。
  • >> 右移运算符>>是双目运算符。右移n位就是除以2的n次方。 其功能是把>>左边的运算数的各二进位全部右移若干位,>>右边的数指定移动的位数。

4.2 运算符优先级

  • 下表列出了所有运算符以及它们的优先级,优先级值越大,表示优先级越高。
优先级分类运算符结合性1逗号运算符,从左到右2赋值运算符=+=-=*=/=%=>>=<<=&=^=|=从右到左3逻辑或||从左到右4逻辑与&&从左到右5按位或|从左到右6按位异或^从左到右7按位与&从左到右8相等/不等==!=从左到右9关系运算符<<=>>=从左到右10位移运算符<<>>从左到右11加法/减法+-从左到右12乘法/除法/取余*(乘号)、/%从左到右13单目运算符!*(指针)、&++--+(正号)、-(负号)从右到左14后缀运算符( )[ ]->从左到右
  • 当然,你可以通过使用括号来临时提升某个表达式的整体运算优先级。

4.3 条件语句 if

  • Go 编程语言中 if 语句的语法如下:
if 布尔表达式 {
   /* 在布尔表达式为 true 时执行 */
   ...
}else {
    /* 在布尔表达式为 false 时执行 */
}
  • Go 的 if 还可以在条件判断语句里声明一个变量,这个变量的作用域只在该条件逻辑块内,其他地方不起作用,如下所示:
package main
  
import "fmt"
func main() {
    if num := 9; num < 0 {
        fmt.Println(num)
    } else if num < 10 {
        fmt.Println(num)
    } else {
        fmt.Println(num)
    }
}
  • 需要注意的是,
    • (1) 不需使用括号将条件包含起来
    • (2) 大括号{}必须存在,即使只有一行语句
    • (3) 左括号必须在if或else的同一行
    • (4) 在if之后,条件语句之前,可以添加变量初始化语句,使用;进行分隔
    • (5) 在有返回值的函数中,最终的return不能在条件语句中

4.4 条件语句 switch

  • switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上至下逐一测试,直到匹配为止。

  • switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加 break。

  • switch 默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case,如果我们需要执行后面的 case,可以使用 fallthrough 。

  • Go 编程语言中 switch 语句的语法如下:

switch var1 {
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}
  • 变量 var1 可以是任何类型,而 val1val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。
  • 可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3
  • 实例1:
package main

import "fmt"

func main() {
   /* 定义局部变量 */
   var grade string = "B"
   var marks int = 90

   switch marks {
      case 90: grade = "A"
      case 80: grade = "B"
      case 50,60,70 : grade = "C"
      default: grade = "D"  
   }

   switch {
      case grade == "A" :
         fmt.Printf("优秀!\n" )    
      case grade == "B", grade == "C" :
         fmt.Printf("良好\n" )      
      case grade == "D" :
         fmt.Printf("及格\n" )      
      case grade == "F":
         fmt.Printf("不及格\n" )
      default:
         fmt.Printf("差\n" );
   }
   fmt.Printf("你的等级是 %s\n", grade );   
   //优秀!
   //你的等级是 A   
}

  • Type Switch : switch 语句还可以被用于 type-switch 来判断某个 interface 变量中实际存储的变量类型。
  • Type Switch 语法格式如下:
switch x.(type){
    case type:
       statement(s);      
    case type:
       statement(s); 
    default: 
       statement(s);
}
  • 实例2:
package main

import "fmt"

func main() {
   var x interface{}
     
   switch i := x.(type) {
      case nil:  
         fmt.Printf(" x 的类型 :%T",i)                
      case int:  
         fmt.Printf("x 是 int 型")                      
      case float64:
         fmt.Printf("x 是 float64 型")                        
      case bool, string:
         fmt.Printf("x 是 bool 或 string 型" )      
      default:
         fmt.Printf("未知型")    
   }  
}
  • fallthrough : 使用 fallthrough 会强制执行后面的 case 语句,fallthrough 不会判断下一条 case 的表达式结果是否为 true。
  • 实例3:
package main

import "fmt"

func main() {

    switch {
    case false:
            fmt.Println("1、case 条件语句为 false")
            fallthrough
    case true:
            fmt.Println("2、case 条件语句为 true")
            fallthrough
    case false:
            fmt.Println("3、case 条件语句为 false")
            fallthrough
    case true:
            fmt.Println("4、case 条件语句为 true")
    case false:
            fmt.Println("5、case 条件语句为 false")
            fallthrough
    default:
            fmt.Println("6、默认 case")
    }
}
  • 以上代码执行结果为:

2、case 条件语句为 true
3、case 条件语句为 false(注意这里!)
4、case 条件语句为 true

  • 从以上代码输出的结果可以看出:switch 从第一个判断表达式为 true 的 case 开始执行,如果 case 带有 fallthrough,程序会继续执行下一条 case,且它不会去判断下一个 case 的表达式是否为 true。

  • 可用 break 终止switch 语句。

文章来源:https://blog.csdn.net/Piobac/article/details/115977246

后台-系统设置-扩展变量-手机广告位-内容正文底部
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
本文地址:https://jcdi.cn/diannaochangshi/qukuailian/801.html

留言与评论(共有 0 条评论)
   
验证码:
后台-系统设置-扩展变量-手机广告位-评论底部广告位

教程弟

https://www.jcdi.cn/

统计代码 | 京ICP1234567-2号

Powered By 教程弟 教程弟

使用手机软件扫描微信二维码