Go語言中的運算符
阿新 • • 發佈:2018-10-28
成語 就是 號碼 嚴格 內存地址 type 更改 能夠 存儲空間 1 概述
&&
true && true = true
true && false = false
false && true = false
false && false = false
||
true || true = true
true || false = true
false || true = true
false || false = false
!
!true = false
!false = true
Go語言提供了,算術,關系,邏輯,位,指針,賦值運算符。本篇整體說明一下。
2 算術運算
- + 相加
- - 相減
- * 相乘
- / 相除
- % 求余
- ++ 自增
- -- 自減
幾個細節,需要留意一下。
- 整數與浮點數進行運算,會將整數轉化為浮點數,再運算。
- 兩個整數相除,結果是整數,取整數部分。5/3 結果會是 1。
- 求余,如果被除數或除數存在負數,那麽余數與被除數保持一致。此處是求余不是取模。
- ++/--,不區分前後,只有變量後的語法,就是 v++。同時++/--構成語句而不是表達式,意味著不能直接賦值。
3 字符串連接運算 +
+運算符,也可以完成字符串的連接運算。
"Hello" + " " + "Hank!"
4 關系運算
- == 檢查兩個值是否相等
- != 檢查兩個值是否不相等
- \> 檢查左邊值是否大於右邊值
- < 檢查左邊值是否小於右邊值
- \>= 檢查左邊值是否大於等於右邊值
- <= 檢查左邊值是否小於等於右邊值
關系運算時用於判斷兩個運算數的關系是否成立。返回布爾值。
5 邏輯運算
- && 邏輯與,參與運算的兩個關系必須同時成立,結果為true,否則為false
- || 邏輯或,參與運算的兩個關系成立一個(或都成立)結果為true,全部關系為false,結果為false。
- ! 邏輯非,用於取反某個關系。非真既假,非假既真。只有一個運算數參與運算
用來判斷多個關系是否成立。運算結果為:
true && true = true
true && false = false
false && true = false
false && false = false
||
true || true = true
true || false = true
false || true = true
false || false = false
!
!true = false
!false = true
6 指針運算
- & 取得變量的內存地址。pv := &v
- * 獲取指針地址對應的值。*pv
示例為:v:=42 pv:=&v fmt.Printf("%T(%v)", pv, pv)// *int 0xc000048b68,*int就是指針類型 值為一個類似規則的地址,就是一個號碼,標識內存的一個空間區域 fmt.Println(*pv)// 42,通過地址獲取對應的變量值 *pv ++ // 通過地址更改對應變量 fmt.Println(*pv, v)// 42 42變量和指針操作的同一變量(內存地址)。
Go語言的指針不可以操作。不能執行偏移這類的操作.
理解指針的幾個概念:
變量:標識符與值(內存中存儲空間)引用。
地址:內存中存儲空間的位置(門牌號)
指針:一種類型,其值為某個地址。
一個數據(變量),我們可以通過變量標識符找到他。也可以將他的地址記錄下來,通過這個地址找到他。能夠記錄地址的數據類型就是指針。指針通過&運算符來獲取變量的地址。
7 位運算
- & 按位與運算
- | 按位或運算
- ^ 按位異或運算
- << 左移運算符,由"<<"右邊的數指定移動的位數,高位丟棄,低位補0。左移n位就是乘以2的n次方。
- \>> 右移運算符,">>"右邊的數指定移動的位數,低位舍棄,高位補0。右移n位就是除以2的n次方。
用於運算構成整數的每個二進制位,就是位上0,1的運算。
8 賦值運算
- = 簡單的賦值運算符,將一個表達式的值賦給一個左值
- += 相加後再賦值
- -= 相減後再賦值
- *= 相乘後再賦值
- /= 相除後再賦值
- %= 求余後再賦值
- <<= 左移後賦值
- \>>= 右移後賦值
- &= 按位與後賦值
- ^= 按位異或後賦值
- |= 按位或後賦值
變量 = 表達式
=左邊的變量,稱之為左值。通常只能是變量。
=右邊的表達式,稱之為右值。表達式是右值。
自賦值運算,一些運算符,可以與賦值運算符結合,完成快捷自運算賦值,就是上面的+=....|=,邏輯是:
v += 1 相當於 v = v + 1
其他的邏輯相同!
9 運算符優先級
由高到低,列表如下:
- ^ !
- * / % << >> & &^
- + - | ^
- == != < <= >= >
- <-
- &&
- ||
建議使用()小括號,明確調整優先級。
10 類型轉換
類型不同的數據不能完成運算。如果需要,則要將類型轉換為一致的類型。
自動轉換,有些轉換Go語言自動完成,例如 5/4.0
5整型會被自動轉換為浮點數。
強制轉換,使用語法 type(數據)
的形式轉換,例如:float64(5)
。
Go語言對類型要求比較嚴格,類型可以相互轉換的場景不多,主要集中在數值上。就是要類型兼容,才可以轉換。
完!
原文出自:小韓說課
微信關註:小韓說課
Go語言中的運算符