【go入门】运算符

前言

go语言和其他语言的运算符一样,大体上分为这么几种,算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、取地址和指针运算符。最后也会说一下它们的优先级。

算术运算符

运算符描述
+相加
-相减
*相乘
/相除
%取余
++自增
自减
//demo1
package main

import "fmt"

func main() {
	a, b := 20, 10
	var c int

	c = a + b
	fmt.Printf("a + b = %d\n", c)
	c = a - b
	fmt.Printf("a - b = %d\n", c)
	c = a * b
	fmt.Printf("a * b = %d\n", c)
	c = a / b
	fmt.Printf("a / b = %d\n", c)
	c = a % b
	fmt.Printf("取余 = %d\n", c)
	a++
	fmt.Printf("自增 = %d\n", a)
	a--
	fmt.Printf("自减 = %d\n", a)
}

输出结果是:

a + b = 30
a - b = 10
a * b = 200
a / b = 2
取余 = 0
自增 = 21
自减 = 20

关系运算符

运算符描述
==相等返回true不相等返回false
!=不相等返回true否则返回false
>左边值大于右边值返回true否则返回false
<左边值小于右边值返回true否则返回false
>=左边值大于等于右边值返回true否则返回false
<左边值小于等于右边值返回true否则返回false

逻辑运算符

运算符描述
&&逻辑与(AND),两边都为真为true否则false
||逻辑或(OR),两边都为假为true否则false
!逻辑非(NOT),若A为真,则非A为假
//demo2
package main

import "fmt"

func main() {
	a := true
	b := false
	fmt.Println(a && b)
	fmt.Println(a || b)
	fmt.Println(!a)
}

输出结果是:

false
true
false

位运算符

位运算符是对内存中的二进制进行运算

运算符描述
&按位与,对两边的操作数按位与,相同为1不同为0
|按位或,对两边的操作数按位或,都为0才为0,只要有一个1则为1
^按位异或,对两边的操作数按位异或,相同为0不同为1
<<左移,左移n位就是乘以2的n次方
>>右移,右移n位就是除以2的n次方

可以看一下上一篇讲常量文章末尾的思考题。

赋值运算符

= 将表达式的值赋给左值(将右边的值赋给左边)
+= 将左右相加赋给左边
-=  *= /= %= <<= >>= &= ^= |=

取地址和指针运算符

go语言和C语言一样也有指针和地址的概念

运算符描述
&返回变量存储地址,&a
*指针变量,地址当中的内容,*a
//demo3
package main

import "fmt"

func main() {
	var a int = 1
	var p *int

	p = &a //p中存的是a的地址
	fmt.Println(p) //输出的是a的地址
	fmt.Println(*p) //*p是通过a的地址找到a的内容
}

输出结果是:

0xc00000a0e8
1

当然你的地址和我的地址可能不一样,这个是随机的,就和你去酒店开房,给你分配的房间号是随机的,只要空着,都可能会分配给你。内存相当于酒店,地址相当于房间号。

运算符优先级

运算符分优先级也就是说有些运算符先算有些后算,当同一优先级的运算符一起出现,从左往右算。

第一优先级 * / % << >> & &^
第二优先级 + - | ^
第三优先级 == != > < >= <=
第四优先级 &&
第五优先级 ||

可以通过小括号提升某个表达式的整体优先级

package main

import "fmt"

func main() {
	a, b, c, d := 20, 10, 15, 5
	var e int

	e = (a + b) * c / d
	fmt.Println(e)
	e = a + (b*c)/d
	fmt.Println(e)
	e = (a + b) * (c / d)
	fmt.Println(e)
	e = ((a + b) * c) / d
	fmt.Println(e)
}

输出结果是:

90
50
90
90
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三尺h

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值