基本运算
数学运算
运算符 :+、-、*、/、%、++、–(在go语言中都是先计算,再赋值,没有–a、++a这种写法)
实例:
func main() {
fmt.Println(10 + 3)
fmt.Println(10 - 3)
fmt.Println(10 * 3)
fmt.Println(10 / 3) //整型除以整型还是整型
fmt.Println(10.0 / 3)
fmt.Println(10 % 3)//求模
//四则运算,使用括号代表优先级
fmt.Println(((1 + 2) * 3 / 4) )
}
以上运行结果为
四舍五入
纯舍:不管后面的小数有多大,都直接舍去
纯入:不管后面的小数有多小,都会进一
func main() {
//四舍五入
fmt.Println(math.Round(3.3))
fmt.Println(math.Round(3.5))
fmt.Println(math.Round(-3.3))
fmt.Println(math.Round(-3.5))
//纯舍
fmt.Println(math.Floor(3.9))
//纯入
fmt.Println(math.Ceil(3.1))
}
运行结果如下
func main() {
//绝对值
fmt.Println(math.Abs(-3.3))
//乘方
fmt.Println(math.Pow(2, 3))
//开方,平方根(Sqrt只是平方根)
fmt.Println(math.Sqrt(9))
fmt.Println(math.Pow(8, (1.0 / 3))) //开立方根
//三角函数
fmt.Println(math.Sin(30.0/180) * math.Pi)
//反正弦,求正弦为0。5的弧度,Pi/6,即30度
fmt.Println(math.Asin(0.5))
}
运行结果如下
比较/关系运算
运算符:>、>=、<、<=、==、!=
实例:
func main() {
a, b := 3, 4
fmt.Println(a > b)
fmt.Println(a >= b)
fmt.Println(a < b)
fmt.Println(a <= b)
fmt.Println(a == b)
fmt.Println(a != b)
}
运行结果如下
逻辑运算
运算符:&&、||、!
实例:
func main() {
var a = true
b := false
fmt.Printf("a与b结果为%v\n", a && b)
fmt.Printf("a或b结果为%v\n", a || b)
fmt.Printf("a与非b结果为%v\n", !(a && b))
}
运行结果如下
位运算
运算符:&、|、^、<<(左移)、>>(右移)
实例:
func main() {
fmt.Println(12 & 10)
fmt.Printf("12 & 10的结果:十进制%d,二进制%b\n", 12&10, 12&10)
fmt.Printf("12 | 10的结果:十进制%d,二进制%b\n", 12|10, 12|10)
fmt.Printf("12 ^ 10的结果:十进制%d,二进制%b\n", 12^10, 12^10)
}
运行结果如下
按位与:12=1100, 10=1010 ,12&10=1000
再转换为十进制
1 * 23 + 0* 22 +0* 21 +0* 20 =8
移位运算
左移
func main() {
/*无符号 没有负数*/
var a uint8 = 12//0000 1100
fmt.Println(a<<2)
fmt.Println(a<<3)
fmt.Println(a<<4)
fmt.Println(a<<5)//1000 0000
}
运行结果如下:
func main() {
//(符号位为1则是负数=>补码=>减一取反得到源码)
var a int8 = 12
fmt.Println(a << 2)
fmt.Println(a << 3)
fmt.Println(a << 4) //1100 0000为负数(-64)
}
运行结果如下:
右移(不需要考虑符号位)
func main() {
var a uint = 12
fmt.Println(a >> 2) //3
fmt.Println(a >> 3) //1
fmt.Println(a >> 4) //0
}
运行结果如下: