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(…)等概念後面文章會介紹到。
今天的課就到這裡,動手試試吧。
相關文章
- 二叉樹的基本運算2二叉樹
- Flink的DataSet基本運算元總結
- 串的基本運算實現-加密解密串加密解密
- spark的基本運算元使用和原始碼解析Spark原始碼
- JDBC運算元據庫基本步驟JDBC
- 8.Golang中的運算子-算術運算子、關係運算子、邏輯運算子、賦值運算子Golang賦值
- 機器學習系列-tensorflow-02-基本操作運算機器學習
- 【numpy學習筆記】陣列的建立和基本運算筆記陣列
- 第三週 專案1 順序表的基本運算
- Java 字串操作、基本運算方法等優化策略Java字串優化
- 分享基本golang學習的書Golang
- 第三週專案1 順序表的基本運算(3)
- java中與運算,或運算,異或運算,取反運算Java
- golang gin框架進行時間運算之解決orm時間與時間運算——附原始碼Golang框架ORM原始碼
- python中字串基本操作以及三種位運算Python字串
- Spark運算元:RDD基本轉換操作map、flatMapSpark
- golang-切片slice的基本介紹Golang
- (位運算)兩個字串的位運算字串
- Golang 學習系列第四天:運算元據庫 PostgreSQLGolangSQL
- Numpy 加法運算,opencv 加法運算,影像的融合OpenCV
- opencv 開運算、閉運算OpenCV
- golang-陣列基本使用Golang陣列
- 陣列和廣義表的基本運算實現(三元組)陣列
- Golang筆記--strconv包的基本用法Golang筆記
- 使用運算元控制公式運算公式
- 我的 golang 學習筆記系列二:golang的函式運用Golang筆記函式
- Lesson4——NumPy 陣列屬性陣列
- JavaScript中的==運算JavaScript
- Swift 語言的基本運算子Swift
- 3、前置運算(++a)與後置運算(a++)的區別
- 使用位運算進行加法運算
- golang 切片簡單運用Golang
- 算術運算子裡的特殊運算子
- 簡單混合運算的計算器
- 計算機中的浮點運算計算機
- 雲端計算的基本概念
- spark-運算元-分割槽運算元Spark
- 二進位制、位運算、位移運算