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

80 阅读2分钟

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

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

GO语言

5、Golang 中的运算符

5.1、Golang 内置的运算符

​        (1)、算术运算符

​        (2)、关系运算符

​        (3)、逻辑运算符

​        (4)、位运算符

​        (5)、赋值运算符

5.2、算数运算符

运算符描述
+相加
-相减
*相乘
/相除
%求余=被除数-(被除数/除数)*除数
fmt.Println(-10%3)  -1;= -10 -(-10/3)*3

注意: ++(自增)和--(自减)在Go 语言中是单独的语句,并不是运算符。

(1)、在golang 中,++ 和-- 只能独立使用。错误写法如下:

var i int = 8
var a int
a = i++ //错误,i++只能独立使用
a = i-- //错误, i--只能独立使用

(2)、在golang 中没有前++ 错误写法如下:

var i int = 1
++i // 错误,在golang 没有前++
--i // 错误,在golang 没有前--
fmt.Println("i=", i)

(3)、++和--正确写法:

var i int = 1
i++
fmt.Println("i=", i)
3

5.3、关系运算符

运算符描述
==两个值是否相等,如果相等返回True 否则返回False。
!=两个值是否不相等,如果不相等返回True 否则返回False。
左边值是否大于右边值,如果是返回True 否则返回False。
>=左边值是否大于等于右边值,如果是返回True 否则返回False。
<左边值是否小于右边值,如果是返回True 否则返回False。
<=左边值是否小于等于右边值,如果是返回True 否则返回False。

5.4、逻辑运算符

运算符描述
&&逻辑AND 运算符。如果两边的操作数都是True,则为True,否则为False。
逻辑OR 运算符。如果两边的操作数有一个True,则为True,否则为False。
!逻辑NOT 运算符。如果条件为True,则为False,否则为True。

5.5、赋值运算符

运算符描述
=赋值运算符,将一个表达式的值赋给一个左值
+=相加后再赋值
-=相减后再赋值
*=相乘后再赋值
/=相除后再赋值
%=求余后再赋值

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
}