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(…)等概念後面文章會介紹到。
今天的課就到這裡,動手試試吧。
相關文章
- Flink的DataSet基本運算元總結
- 二叉樹的基本運算2二叉樹
- spark的基本運算元使用和原始碼解析Spark原始碼
- 8.Golang中的運算子-算術運算子、關係運算子、邏輯運算子、賦值運算子Golang賦值
- 【numpy學習筆記】陣列的建立和基本運算筆記陣列
- 分享基本golang學習的書Golang
- python中字串基本操作以及三種位運算Python字串
- Golang筆記--strconv包的基本用法Golang筆記
- golang-切片slice的基本介紹Golang
- 機器學習系列-tensorflow-02-基本操作運算機器學習
- golang gin框架進行時間運算之解決orm時間與時間運算——附原始碼Golang框架ORM原始碼
- Lesson4——NumPy 陣列屬性陣列
- Golang 學習系列第四天:運算元據庫 PostgreSQLGolangSQL
- 7-23 jmu-ds-單連結串列的基本運算 (15 分)
- golang-陣列基本使用Golang陣列
- Numpy 加法運算,opencv 加法運算,影像的融合OpenCV
- opencv 開運算、閉運算OpenCV
- 我的 golang 學習筆記系列二:golang的函式運用Golang筆記函式
- 使用運算元控制公式運算公式
- Bash基本運算子
- JavaScript中的==運算JavaScript
- 3、前置運算(++a)與後置運算(a++)的區別
- 算數基本定理
- 使用位運算進行加法運算
- 算術運算子裡的特殊運算子
- [20181229]bash shell的算術運算 .txt
- 簡單混合運算的計算器
- golang 切片簡單運用Golang
- 前端、後端、運維的基本思考前端後端運維
- CDN運作的基本原理
- 有符號浮點運算的基本步驟:以雙線性插值為例符號
- 算術運算子++、--的使用
- 警惕位移運算<<的坑
- Java中的位運算Java
- 位運算子的計算
- 神奇的位非運算
- JS中的位運算JS
- 位運算的應用