你了解Go语言嘛?(六) | 青训营笔记

59 阅读2分钟

大家好!这是我参与「第五届青训营 」笔记创作活动的第6天。

我是一名在校大二的学生,很荣幸的参加本次青训营,所以我想把我在这次青训营的学习经历通过这次活动记录下来,和本次参加项目的小伙伴一起学习探讨,今天讲解的是go语言基础的第六节,加油!学习永无止境!💪💪💪

GO语言

5.6、位运算符(了解)

​         位运算符对整数在内存中的二进制位进行操作。

运算符描述
&参与运算的两数各对应的二进位相与。(两位均为1 才为1)
参与运算的两数各对应的二进位相或。(两位有一个为1 就为1)
参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。(两位不一样则为1)
<<左移n 位就是乘以2 的n 次方。“a<<b”是把a 的各二进位全部左移b 位,高位丢弃,低位补0。
>>右移n 位就是除以2 的n 次方。“a>>b”是把a 的各二进位全部右移b 位。
package main
import "fmt"
func main() {
	/*
		& 两位均为1 才为1
		| 两位有一个为1 就为1
		^ 相异或两位不一样则为1
		<< 左移n 位就是乘以2 的n 次方。“a<<b”是把a 的各二进位全部左移b 位,
		高位丢弃,低位补0。
		右移n 位就是除以2 的n 次方。
	*/
	var a int = 5 // 101
	var b int = 2 // 010
	fmt.Println("a&b=", a&b) // 000 值0
	fmt.Println("a|b=", a|b) // 111 值7
	fmt.Println("a^b=", a^b) // 111 值7
	fmt.Println("5>>2=", a>>b) // 5 右移2 位1
	fmt.Println("5<<2=", a<<b) // 5 左移2 位10100
	fmt.Println("5<<1=", 5<<1) // 1010
	fmt.Println("5>>1=", 5>>1) // 10
	fmt.Println("7>>2=", 7>>2) // 1
}

6、Golang 中的流程控制

​        Go 语言中最常用的流程控制有if 和for,而switch 和goto 主要是为了简化代码、降低重复代码而生的结构,属于扩展类的流程控制。

6.1、if else(分支结构)

6.1.1、if 条件判断基本写法

​        Go 语言中if 条件判断的格式如下:

if 表达式1 {
	分支1
} else if 表达式2 {
	分支2
} else{
	分支3
}

注意: Go 语言规定,与if 匹配的左括号{必须与if 和表达式放在同一行,{放在其他位置会触发编译错误。同理,与else 匹配的{也必须与else 写在同一行,else 也必须与上一个if 或else if 右边的大括号在同一行。

func ifDemo1() {
	score := 65
	if score >= 90 {
		fmt.Println("A")
	} else if score > 75 {
		fmt.Println("B")
	} else {
		fmt.Println("C")
	}
}

6.1.2、if 条件判断特殊写法

         if 条件判断还有一种特殊的写法,可以在if 表达式之前添加一个执行语句,再根据变量值进行判断,举个例子:

if score := 56; score >= 90 {
	fmt.Println("A")
} else if score > 75 {
	fmt.Println("B")
} else {
	fmt.Println("C")
}