Go 語言的各種運算符

閱讀時間約 6 分鐘
raw-image


👨‍💻簡介

本文快速介紹了 Go 語言中的各種運算符,從數學計算到邏輯判斷,包括自增自減、賦值、比較和位運算。透過實例和清晰的解釋,快速掌握如何在程式中運用這些運算符。

算術運算符

在 Go 語言中,我們可以使用各種算術運算符來執行基本的數學運算。以下是一些常用的算術運算符:

  • +:加法運算,用來將兩個數相加。
  • -:減法運算,用來從一個數中減去另一個數。
  • *:乘法運算,用來將兩個數相乘。
  • /:除法運算,用來將一個數除以另一個數。
  • %:求餘運算,用來得到兩個數相除的餘數。

例如:

a := 5
b := 3
c := a + b // c 的值是 8
d := a * b // d 的值是 15

此外,我們還有自增和自減運算符,它們用來讓變數的值增加或減少 1:

  • ++:自增運算符,將變數的值增加 1。
  • --:自減運算符,將變數的值減少 1。

舉個例子:

x := 10
x++ // x 的值變成了 11
y := 5
y-- // y 的值變成了 4

賦值運算符

賦值運算符用來將一個值賦給一個變數。我們常見的賦值運算符有:

  • =:將右邊的值賦給左邊的變數。
  • +=:先將右邊的值加到左邊的變數上,然後再將結果賦給左邊的變數。
  • -=:先從左邊的變數中減去右邊的值,然後再將結果賦給左邊的變數。
  • *=:先將左邊的變數乘以右邊的值,然後再將結果賦給左邊的變數。
  • /=:先將左邊的變數除以右邊的值,然後再將結果賦給左邊的變數。
  • %=:先將左邊的變數除以右邊的值取餘數,然後再將結果賦給左邊的變數。

簡單範例如下:

a := 10
b := 5

a = 20 // a 的值變成了 20
a += b // 等同於 a = a + b,所以 a 的值變成了 25
a -= b // 等同於 a = a - b,所以 a 的值變成了 20
a *= b // 等同於 a = a * b,所以 a 的值變成了 100
a /= b // 等同於 a = a / b,所以 a 的值變成了 20
a %= b // 等同於 a = a % b,所以 a 的值變成了 0

比較運算符

比較運算符用來比較兩個值的大小或者是否相等。我們常用的比較運算符有:

  • ==:判斷兩個值是否相等。
  • !=:判斷兩個值是否不相等。
  • <:判斷左邊的值是否小於右邊的值。
  • >:判斷左邊的值是否大於右邊的值。
  • <=:判斷左邊的值是否小於等於右邊的值。
  • >=:判斷左邊的值是否大於等於右邊的值。

以下為使用範例:

x := 10
y := 5

isEqual := x == y // false,因為 x 不等於 y
isNotEqual := x != y // true,因為 x 不等於 y
isLess := x < y // false,因為 x 不小於 y
isGreater := x > y // true,因為 x 大於 y
isLessOrEqual := x <= y // false,因為 x 不小於等於 y
isGreaterOrEqual := x >= y // true,因為 x 大於等於 y

邏輯運算符

邏輯運算符用來執行邏輯操作。我們常用的邏輯運算符有:

  • &&:邏輯與,用來判斷多個條件是否同時滿足。
  • ||:邏輯或,用來判斷多個條件是否至少有一個滿足。
  • !:邏輯非,用來取反一個條件的結果。

以下為使用範例:

p := true
q := false

andResult := p && q // false,因為 p 和 q 不都為 true
orResult := p || q // true,因為 p 或 q 至少有一個為 true
notResult := !p // false,因為 p 為 true,取反後為 false

位運算符

位運算符用來在二進制位級別執行操作。我們常用的位運算符有:

  • &:按位與,對每一位進行與操作。
  • |:按位或,對每一位進行或操作。
  • ^:按位異或,對每一位進行異或操作。
  • <<:左移,將二進制位向左移動指定的位數。
  • >>:右移,將二進制位向右移動指定的位數。

以下為使用範例:

a := 5 // 二進制表示:0101
b := 3 // 二進制表示:0011

andResult := a & b // 二進制表示:0001,十進制表示:1
orResult := a | b // 二進制表示:0111,十進制表示:7
xorResult := a ^ b // 二進制表示:0110,十進制表示:6
leftShiftResult := a << 1 // 二進制表示:1010,十進制表示:10
rightShiftResult := a >> 1 // 二進制表示:0010,十進制表示:2

其他運算符

其他運算符用來執行一些特定的操作。我們常用的其他運算符有:

  • &:取地址,用來獲取變數的內存地址。
  • *:指針,用來聲明指針變數。
  • <-:通道操作符,用來發送和接收通道消息。

以下為使用範例:

var num int = 42
ptr := &num // ptr 現在包含 num 的內存地址

var value int = *ptr // value 現在包含 ptr 所指向的內存中的值
ch := make(chan int) // 創建一個整數通道
ch <- 10 // 將值 10 發送到通道 ch 中
receivedValue := <-ch // 從通道 ch 接收值並存儲在 receivedValue 中

注意事項

  • 在進行數學運算時,一定要注意數據類型是否匹配,避免因為類型轉換引起的問題。
  • 在使用邏輯運算符時,要確保清楚地理解各個條件的組合關係。

📚Reference

avatar-img
17會員
83內容數
golang
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Alan的開發者天地 的其他內容
👨‍💻簡介 Go 語言有各種資料型別,分為基本型別和複合型別。基本型別包括: 整數、浮點數、布林值、字串 複合型別包括: 陣列、片段、結構、函式、對映、通道、介面 等。 整數型別 整數型別有許多種,像是 int8、int16、int32、int64。我們可以依據實際需求選擇。
👨‍💻簡介 在 Golang 中,你可以使用不同的方式來宣告變數和常數。宣告變數時,可以直接指定值,或者使用型別推導,更簡單地用 := 來宣告局部變數。另外,還可以一次宣告多個變數,相同型別的變數可以一起宣告,或者使用括號宣告不同型別的變數。常數則使用 const 關鍵字宣告,確保值不變
👨‍💻簡介 在這篇文章裡,會簡單介紹幾個關鍵的基本概念和語法結構,加快上手這門程式語言。
👨‍💻如何在go中驗證SSL憑證 因之前玩過監控證書,最近在接觸golang因此來看看有甚麼方法能夠取得憑證到期日,最後發現有crypto/tls這個module可以用,驗證步驟簡單三步如下
👨‍💻簡介 Go 語言有各種資料型別,分為基本型別和複合型別。基本型別包括: 整數、浮點數、布林值、字串 複合型別包括: 陣列、片段、結構、函式、對映、通道、介面 等。 整數型別 整數型別有許多種,像是 int8、int16、int32、int64。我們可以依據實際需求選擇。
👨‍💻簡介 在 Golang 中,你可以使用不同的方式來宣告變數和常數。宣告變數時,可以直接指定值,或者使用型別推導,更簡單地用 := 來宣告局部變數。另外,還可以一次宣告多個變數,相同型別的變數可以一起宣告,或者使用括號宣告不同型別的變數。常數則使用 const 關鍵字宣告,確保值不變
👨‍💻簡介 在這篇文章裡,會簡單介紹幾個關鍵的基本概念和語法結構,加快上手這門程式語言。
👨‍💻如何在go中驗證SSL憑證 因之前玩過監控證書,最近在接觸golang因此來看看有甚麼方法能夠取得憑證到期日,最後發現有crypto/tls這個module可以用,驗證步驟簡單三步如下
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
在進入主題之前建議先行閱讀「【程式語言 - Go】來認識Google開發的程式語言…」,初步認識一下Go語言是什麼? 容不容易學習? 才能夠更快的體會此篇章的目的。 當我們在進行軟體開發時,常常會需要有背後的資料庫系統來儲存我們的資料,而資料庫系統也會隨著時代的演進,進行大幅度的更新,那在這樣
Thumbnail
Golang(Go)是由Google開發的一種開源的、靜態型別的編程語言,目的在提供一個簡單、高效、安全以及易於擴展的程式語言,特別適用於並發和平行處理,Go語言設計上著重於開發者的生產力,並提供了現代化的語法和豐富的標準庫。 強調簡單易讀,讓我們回歸原始以最簡易的方式來撰寫程式,併發的特性讓日趨
Thumbnail
一般來說我們會這樣定義Struct來接收前端請求的POST Body 那假設POST Body是這樣 此時我們利用gin的BindJSON來Unmarshal 結果印出來會是 上述結果的name被我們過濾掉是正常,但enabled就我們的需求上來看,不應該被過濾掉才對。 所以我們應該將bool、in
Thumbnail
前言介紹 在 golang 1.16之後官方提供的工具包裡面有個 `embed` 可以使用,這使得把檔案嵌入 golang 的二進制編譯更為容易,以至於方便我們部署一些並非 .go 的副檔名檔案。 這裡要介紹的是如何把 vue 作為前端,編譯至我們的 golang 專案內,起一個網頁服務。 在開始
Thumbnail
由於Go語言本身沒有提供Enum的功能, 故我們可以使用package及type的技巧來達到類似的功能,假設今天要定義季節的enum型別, 包含了「春、夏、秋、冬」四種值的時候,可以怎麼做呢? 首先我們可以用package來框住season的範圍: 然而在season.go可以定義一個字串的類型 最
Thumbnail
我們開發程式的過程中難免會依賴DB或其他服務, 但複雜的網路環境下我們並沒有辦法確保我們發送的請求是否正確的送達, 因此我們可以在程式中加入Retry機制, 提升我們軟體的強健性。 尤其是面對NoSQL相對弱一致性的DB時更需注意, 而在Go語言, 我們可以用簡單的技巧來完成Retry的策略, 在進
Thumbnail
完整標題:go on 與「繼往走向」或「繼往開來」及「繼」、「續」、「繼續」、「接續」、「启開」、「正昂」、「發生」等的轉換密碼
Thumbnail
完整標題:go 與「之」、「至」、「至于」、「到」、「到于」、「前往」、「進往」、「步往」、「走」、「走于」、「走往」、「行」、「行于」、「行往」、「行走」、「去」、「過」、「過去」、「過于」、「步」、「步于」、「步往」、「步行」、「機遇」、「行旺」等的轉換密碼
Thumbnail
完整標題:go around 與「逛」、「觀覽」、「交往」、「相處」、「走訪」、「轉繞圓動」等的轉換密碼及「天狼星」之謎
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
在進入主題之前建議先行閱讀「【程式語言 - Go】來認識Google開發的程式語言…」,初步認識一下Go語言是什麼? 容不容易學習? 才能夠更快的體會此篇章的目的。 當我們在進行軟體開發時,常常會需要有背後的資料庫系統來儲存我們的資料,而資料庫系統也會隨著時代的演進,進行大幅度的更新,那在這樣
Thumbnail
Golang(Go)是由Google開發的一種開源的、靜態型別的編程語言,目的在提供一個簡單、高效、安全以及易於擴展的程式語言,特別適用於並發和平行處理,Go語言設計上著重於開發者的生產力,並提供了現代化的語法和豐富的標準庫。 強調簡單易讀,讓我們回歸原始以最簡易的方式來撰寫程式,併發的特性讓日趨
Thumbnail
一般來說我們會這樣定義Struct來接收前端請求的POST Body 那假設POST Body是這樣 此時我們利用gin的BindJSON來Unmarshal 結果印出來會是 上述結果的name被我們過濾掉是正常,但enabled就我們的需求上來看,不應該被過濾掉才對。 所以我們應該將bool、in
Thumbnail
前言介紹 在 golang 1.16之後官方提供的工具包裡面有個 `embed` 可以使用,這使得把檔案嵌入 golang 的二進制編譯更為容易,以至於方便我們部署一些並非 .go 的副檔名檔案。 這裡要介紹的是如何把 vue 作為前端,編譯至我們的 golang 專案內,起一個網頁服務。 在開始
Thumbnail
由於Go語言本身沒有提供Enum的功能, 故我們可以使用package及type的技巧來達到類似的功能,假設今天要定義季節的enum型別, 包含了「春、夏、秋、冬」四種值的時候,可以怎麼做呢? 首先我們可以用package來框住season的範圍: 然而在season.go可以定義一個字串的類型 最
Thumbnail
我們開發程式的過程中難免會依賴DB或其他服務, 但複雜的網路環境下我們並沒有辦法確保我們發送的請求是否正確的送達, 因此我們可以在程式中加入Retry機制, 提升我們軟體的強健性。 尤其是面對NoSQL相對弱一致性的DB時更需注意, 而在Go語言, 我們可以用簡單的技巧來完成Retry的策略, 在進
Thumbnail
完整標題:go on 與「繼往走向」或「繼往開來」及「繼」、「續」、「繼續」、「接續」、「启開」、「正昂」、「發生」等的轉換密碼
Thumbnail
完整標題:go 與「之」、「至」、「至于」、「到」、「到于」、「前往」、「進往」、「步往」、「走」、「走于」、「走往」、「行」、「行于」、「行往」、「行走」、「去」、「過」、「過去」、「過于」、「步」、「步于」、「步往」、「步行」、「機遇」、「行旺」等的轉換密碼
Thumbnail
完整標題:go around 與「逛」、「觀覽」、「交往」、「相處」、「走訪」、「轉繞圓動」等的轉換密碼及「天狼星」之謎