五 Go语言之运算符

GO语言中常见的运算符有算术运算符,赋值运算符,关系运算符,逻辑运算符等。

一 算术运算符

运算符 术语 示例 结果
+ 1+2 3
- 8-2 6
* 3*3 9
/ 12/3
% 取模(取余) 10%3 1
++ 后自增,没有前自增 a=0; a++ a=1
-- 后自减,没有前自减 a=2; a-- a=1

注意:GO语言中没有前自增,没有前自减,这是与其它编程语言不同的地方。

1.1 类型转换

遇到小数时的处理方式

func main() {
    
    
	var chinese int =90
	var math int =80
	var english int =69
	//求平均数(结果不带小数)
	fmt.Printf("平均数是:%d\n",(chinese+math+english)/3)
	//求平均数(结果带小数)
	fmt.Printf("平均数是(带小数):%f",float64(chinese+math+english)/3)
}

结果
在这里插入图片描述
测试一:下边的代码会报错吗?

func main() {
    
    
	var num1 int = 90
	var num2 int = 81
	var num3 float64
	num3 = (num1 + num2) / 2
    fmt.Printf("平均数是:%f",num3)
}

报错如下
在这里插入图片描述

改为这样的即可

func main() {
    
    
	var num1 int = 90
	var num2 int = 81
	var num3 float64
	num3 = float64(num1 + num2) / 2
    fmt.Printf("平均数是:%f",num3)
}

测试二:下边的代码会报错吗?

func main() {
    
    
	var num1 int = 10
	var num2 int = 3
	var mod float64
	mod = float64(num1/num2)
    fmt.Printf("余数是:%f",mod)
}

不会报错,结果如下
在这里插入图片描述
测试三:下边的代码会报错吗?

func main() {
    
    
	var num1 int = 35
	var num2 int = 40
	var num3 int = 2
	var avg float64
	avg = float64(num1+num2)/num3
    fmt.Printf("余数是:%f",avg)
}

报错如下:
在这里插入图片描述
改为下边这样即可

func main() {
    
    
	var num1 int = 35
	var num2 int = 40
	var num3 int = 2
	var avg float64
	avg =float64((float64(num1+num2))/float64(num3))
    fmt.Printf("结果是:%f",avg)
}

运行结果
在这里插入图片描述
强制类型转换,数据类型一定要相兼容

下边的写法对吗?

func main() {
    
    
	var  a string
	var b int
	a="3.14"
	b=int(a)
    fmt.Printf("b=%d",b)
}

报错:
在这里插入图片描述
谨记:int 转float强制转换,多小数
float转int强制转换,丢精度.

注意:+运算符除了可以做加法,还可以像java一样连接字符串

func main() {
    
    
	var a string = "abc"
	var b string = "ghj"
	fmt.Printf("%s", a+b)
}

结果:
在这里插入图片描述

二 赋值运算符

关于赋值运算符前面我们已经使用过多次,赋值运算符 = ,
var int num=9;num=num+1; 这里的=号是赋值运算符,不是数学义意上的相等.

常见的赋值运算符如下,前面我们使用的=是普通赋值,+=,-=等我们称为“复合赋值运算符”

运算符 说明 示例
= 普通赋值 c = a + b 将 a + b 表达式结果赋值给 c
+= 相加后再赋值 c += a 等价于 c = c + a
-= 相减后再赋值 c -= a 等价于 c = c - a
*= 相乘后再赋值 c *= a 等价于 c = c * a
/= 相除后再赋值 c /= a 等价于 c = c / a
%= 求余后再赋值 c %= a 等价于 c = c % a

三 关系运算符

关系运算符我们又称为比较运算符,听到比较这个词,大家想到的就是比较大小,例如:
大象的重量(1500)>老鼠的重量(1)
兔子的寿命(3)>乌龟的寿命(1000)
我的年龄(20)==你的年龄(20)
提问:比大比小的结果是什么?
结果是对或者是错,在GO语言中,怎样表示对与错呢?
关系运算的结果是布尔类型的。
bool值只有两个
真:true
假:false

GO语言中常见的关系运算符如下:

运算符 术语 示例 结果
== 相等于 4 == 3 false
!= 不等于 4 != 3 true
< 小于 4 < 3 false
> 大于 4 > 3 true
<= 小于等于 4 <= 3 false
>= 大于等于 4 >= 1 true
由以上关系运算符链接的表达式我们称为关系表达式。 关系运算符具体使用方式如下:
func main() {
    
    
	var b bool
	b = 1500 > 1
	fmt.Printf("%t\n", b)

	b = 3 > 100
	fmt.Printf("%t\n", b)

	b = 20 == 20
	fmt.Printf("%t\n",b)
}

结果
在这里插入图片描述

四 逻辑运算符

4.1 常见的逻辑运算符

运算符 术语 示例 结果
!a 如果a为假,则!a为真; 如果a为真,则!a为假。
&& a&&b 如果a和b都为真,则结果为真,否则为假。
|| a||b 如果a和b有一个为真,则结果为真,二者都为假时,结果为假。
有逻辑运算符连接的表达式叫做逻辑表达式。通过以上表格我们发现:逻辑表达式的结果同样也是bool类型。逻辑运算符两边放的一般都是关系表达式或者bool类型的值。 例如: 5>3 &&true 3>5||false

五 其他运算符

运算符 术语 示例 结果
& 取地址运算符 &a 变量a的地址
* 取值运算符 *a 指针变量a所指向内存的值
关于指针的应用,后面会重点讲解,目前大家只需要掌握&

六 运算符优先级

上面我们已经将运算符介绍完了,下面说一下它们的运算符优先级

在Go语言中,一元运算符(一些只需要一个操作数的运算符称为一元运算符(或单目运算符)。)拥有最高的优先级,二元运算符的运算方向均是从左至右。

下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低:

优先级 运算符
7 ^ !
6 * / % << >>&&^
5 + - | ^
4 == != < <= >= >
3 <-
2 &&
1 ||
上图中部分运算符现在没有讲解到,后期用到时再给大家具体讲解,目前大家需要掌握的是算术,赋值,关系,逻辑,取地址运算符。

注意:逻辑与的优先级要高于逻辑或。

Guess you like

Origin blog.csdn.net/qq_33417321/article/details/114988429