Golang学习笔记(02-2-数据类型-运算符)

391 阅读3分钟

1. 算数运算符

运算符描述
+相加
-相减
*相乘
/相除。整数相除为结果为整数,浮点数相除为浮点数
%求模。即求余数
++自增,用在变量名之后,确切来说属于表达式而不是运算符。不支持 a=b++; b++ > 1写法
--自减,用在变量名之后,确切来说属于表达式而不是运算符。不支持 a=b--; b-- > 0写法

2. 关系运算符

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

3. 逻辑运算符

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

4. 位运算

运算符描述
&参与运算的两数各对应的二进位相与。(两位均为1才为1)
|参与运算的两数各对应的二进位相或。(两位有一个为1就为1)
参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。(两位不一样则为1)
<<左移n位就是乘以2的n次方。“a<<b”是把a的各二进位全部左移b位,高位丢弃,低位补0。
>>右移n位就是除以2的n次方。“a>>b”是把a的各二进位全部右移b位。

5. 赋值运算

运算符描述
=简单的赋值运算符,将一个表达式的值赋给一个左值
+=相加后再赋值
-=相减后再赋值
*=相乘后再赋值
/=相除后再赋值
%=求余后再赋值
<<=左移后赋值
>>=右移后赋值
&=按位与后赋值
|=按位或后赋值
^=按位异或后赋值

6. 其它算数场景

6.1. N次方问题

package main

import (
	"fmt"
	"math"
)

func main()  {
	a := math.Pow(2,16)  // float64
	b := int64(a)
	fmt.Printf("%T %v\n", a, a)
	fmt.Printf("%T %v\n", b, b)
}
[root@heyingsheng 2020-03-12]# go run 04.go
float64 65536
int64 65536

6.2. 四舍五入问题

func main() {
	var (
		a = 1.13
		b = 1.4769
		c = 0.99114
		d = -1.134
		e = -2.995
	)
	fmt.Printf("%v --> 向下取整:%v; 向上取整:%v\n", a, math.Floor(a), math.Ceil(a))
	fmt.Printf("正数四舍五入到整数: %v --> %v ; %v --> %v\n", b, math.Floor(b+0.5), c, math.Floor(c+0.5))
	fmt.Printf("负数四舍五入到整数: %v --> %v ; %v --> %v\n", d, math.Ceil(d-0.5), e, math.Ceil(e-0.5))
	// 四舍五入到指定小数位
	x, y := fmt.Sprintf("%.2f", b), fmt.Sprintf("%.2f", c) // x,y 是 string类型
	x1, _ := strconv.ParseFloat(x, 64)                     // 将字符串转为 float64 类型
	y1, _ := strconv.ParseFloat(y, 64)                     // 将字符串转为 float64 类型
	fmt.Printf("四舍五入到两位小数: %v --> %v ; %v --> %v\n", b, x1, c, y1)
}
[root@duduniao review]# go run cal.go
1.13 --> 向下取整:1; 向上取整:2
正数四舍五入到整数: 1.4769 --> 1 ; 0.99114 --> 1
负数四舍五入到整数: -1.134 --> -1 ; -2.995 --> -3
四舍五入到两位小数: 1.4769 --> 1.48 ; 0.99114 --> 0.99