Go語言中的運算符

1 概述

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語言對類型要求比較嚴格,類型可以相互轉換的場景不多,主要集中在數值上。就是要類型兼容,纔可以轉換。

完!
原文出自:小韓說課
微信關注:小韓說課
小韓說課

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章