【Duke】运算符005 - PingPongGooo/GoFoundation GitHub Wiki

Go是生产力语言,为了避免编程出错。 Go语言没有前置的++,--

用==比较数组 相同维数且含有相同个数元素的数组才可以比较 每个元素都相同的才相等

package operator_test

import "testing"

func TestCompareArray(t *testing.T)  {
	a:=[...]int{1,2,3,4}
	b:=[...]int{1,3,4,5}
	//c:=[...]int{1,2,3,4,5}
	d:=[...]int{1,2,3,4}
	t.Log(a == b)
	//t.Log(a == c) // 编译错误
	t.Log(a == d)
}

位运算符 与其他主要编程语言的差异,Go语言为了提高生产力 &^ 按位置零

左操作数 右操作数

只要右边操作数为1 不论左操作数是多少,都得到0 如果右边操作数为0 左边操作数是什么,结果就是什么

1 &^ 0  -- 1
1 &^ 1  -- 0
0 &^ 1  -- 0
0 &^ 0  -- 0
package operator_test

import "testing"

const(
	Readable = 1 << iota
	Writable
	Executable
)

func TestCompareArray(t *testing.T)  {
	a:=[...]int{1,2,3,4}
	b:=[...]int{1,3,4,5}
	//c:=[...]int{1,2,3,4,5}
	d:=[...]int{1,2,3,4}
	t.Log(a == b)
	//t.Log(a == c) // 编译错误
	t.Log(a == d)
}

func TestBitClear(t *testing.T){
	a:=7 // 0111
	a = a&^Readable
	b := a &^Executable
	t.Log(a&Readable == Readable,a&Writable == Writable,a&Executable == Executable)
	t.Log(b&Readable == Readable,b&Writable == Writable,b&Executable == Executable)
}

//位运算符
//与其他主要编程语言的差异,Go语言为了提高生产力
//&^ 按位置零
//
//1 &^ 0  -- 1
//1 &^ 1  -- 0
//0 &^ 1  -- 0
//0 &^ 0  -- 0