golang lesson4 -基本的运算

这节课,我们来谈谈golang中基本运算。计算机被发明出来,就是为了代替人做运算操作的,CPU的两个核心模块-运算器和控制器。同样,做程序绕不开运算这个基础功能。废话不多说,直接奔主题:

  • 算术运算符(7个):+ - * / % ++ --,它们分别为:加法、减法、乘法、除法、求模(也叫求余)、自增、自减。这里注意一点:在Golang中只支持后置++、后置–。
  • 比较运算符(6个):== != > < >= <=,它们分别为:等于、不等于、大于、小于、大于等于、小于等于。这个和其他语言没有什么区别,不过有些语言(比如Javacript)支持 ===(全等),在golang中是不支持的,golang默认是相同类型的数据才可以作比较 。
  • 逻辑运算符(3个): && || !,它们分别为:逻辑与、逻辑或和逻辑非。这个和其他语言也没有什么差别,使用时注意短路操作即可。
  • 位运算符(6个):& | ^ << >> &^,他们分别为:按位与、按位或、按位异或、左移、右移、按位清零。golang中专门添加了按位清零操作,主要是有很多时候这个是比较有用的。按位清零的原理如下:
    1 &^ 0 => 1
    1 &^ 1 => 0
    0 &^ 1 => 0
    0 &^ 0 => 0
    也就是如果右边的位是1,则结果中对应的位就是0(清零)。如果右边的位是0,则结果跟左边的一致(滤过)。

示例:

package bitclear

import "testing"

const (
	Readable = 1 << iota
	Writable
	Executable
)

func TestBitClearFunc(t *testing.T) {
	a := 7
	b := a &^ Readable // 将Readable对应的位清零后赋值给变量b,b就失去了可读属性
	c := a &^ Writable // 将Writable对应的位清零后赋值给变量c,c就失去了可写属性
	d := a &^ Executable // 将Executable对应的位清零后赋值给变量d,d就失去了可执行属性
	t.Log(a, " ", b, " ", c, " ", d)
}

代码里用到iota、const(…)等概念后面文章会介绍到。

今天的课就到这里,动手试试吧。

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页