GO 之運(yùn)算符號(hào)的具體使用
算術(shù)運(yùn)算符:
二元的運(yùn)算符:+ - * / %
四則運(yùn)算沒(méi)啥好說(shuō)的,從小就開(kāi)始學(xué)習(xí),最后一個(gè) % 表示 求余數(shù)或者取模運(yùn)算。
package main
import "fmt"
func main() {
a := 1 + 2
b := a - 1
c := a * b
d := c / a
e := c % 3
fmt.Println("a := 1 + 2 的結(jié)果是:", a)
fmt.Println("b := a - 1 的結(jié)果是:", b)
fmt.Println("c := a * b 的結(jié)果是:", c)
fmt.Println("d := c / a 的結(jié)果是:", d)
fmt.Println("e := c % 3 的結(jié)果是:", e)
}一元運(yùn)算符:++ --
自增(
++):將變量的值增加 1。自減(
--):將變量的值減少 1。它們只能作為獨(dú)立的語(yǔ)句使用,不能出現(xiàn)在表達(dá)式中。例如,
a = b++或c = --d這樣的寫(xiě)法在 Go 語(yǔ)言中是不允許的。
package main
import "fmt"
func main() {
var i int = 1
i++
fmt.Println("i++ 的結(jié)果:", i)
i--
fmt.Println("i-- 的結(jié)果:", i)
}關(guān)系運(yùn)算符
關(guān)系運(yùn)算符是用于比較兩個(gè)操作數(shù)的值,并返回一個(gè)布爾值。
package main
import "fmt"
func main() {
var a int = 10
var b int = 20
fmt.Println("a == b : ", a, b, a == b)
fmt.Println("a != b : ", a, b, a != b)
fmt.Println("a > b : ", a, b, a > b)
fmt.Println("a < b : ", a, b, a < b)
fmt.Println("a >= b : ", a, b, a >= b)
fmt.Println("a <= b : ", a, b, a <= b)
}邏輯運(yùn)算符
邏輯運(yùn)算符的操作數(shù)是布爾表達(dá)式,即表達(dá)式的結(jié)果是 true 或 false。C語(yǔ)言里面,表達(dá)式的值如果是零值則為false,非零值則為true。在這里行不通了,必須是操作的必須是布爾表達(dá)式,不能直對(duì)一個(gè)變量進(jìn)行判斷了?。。?/p>
package main
import "fmt"
func main() {
a := true
b := false
c := true
d := false
fmt.Println("邏輯與(&&)運(yùn)算:")
fmt.Println(a, b, a && b)
fmt.Println(a, c, a && c)
fmt.Println(a, d, a && d)
fmt.Println(b, d, b && d)
fmt.Println("邏輯或(||)運(yùn)算:")
fmt.Println(a, b, a || b)
fmt.Println(a, c, a || c)
fmt.Println(a, d, a || d)
fmt.Println(b, d, b || d)
fmt.Println("邏輯非(!)運(yùn)算:")
fmt.Println(a, !a)
fmt.Println(b, !b)
}位運(yùn)算符
位運(yùn)算就是將一個(gè)變量存放的數(shù)值轉(zhuǎn)換成二進(jìn)制的01表示的形式,然后再對(duì)每一個(gè)二進(jìn)制位進(jìn)行計(jì)算。主要包括 按位與(&)、按位或(|)、按位(^) 和 位清空(&^)。
- 按位與(&) :相同位置的二進(jìn)制數(shù)值,全為1,則值為1,否則為 0
- 按位或(|):相同位置的二進(jìn)制數(shù)值,全為0,則值為0,否則為 1
- 按位(^):相同位置的二進(jìn)制數(shù)值,不同,則值為1,否則為 0
- 按位清空(&^):
第一種解釋方法:
這里其實(shí)有個(gè)概念我給補(bǔ)充一下,=前面的值可以成為原始值,后面的值成為掩碼,這么一來(lái)就好解釋了。對(duì)于掩碼來(lái)說(shuō)如果二進(jìn)制位的值為 0, 則取原始值對(duì)應(yīng)的二進(jìn)制位的數(shù)值,如果為1,則對(duì)應(yīng)位的值為0
第二種解釋方法:
我自己親自計(jì)算了幾次結(jié)果都正確,數(shù)值及算法,幫助理解。
a &^ = b 相當(dāng)于 a = a & b ^ a 也相當(dāng)于 a ^ b & a
package main
import "fmt"
func main() {
a := 10
b := 11
fmt.Println(a, " & ", b, "=", a & b)
fmt.Println(a, " | ", b, "=", a | b)
fmt.Println(a, " ^ ", b, "=", a ^ b)
fmt.Println(a, " &^ ", b, "=", a &^ b)
}賦值運(yùn)算符
賦值運(yùn)算符是最常用的運(yùn)算符了,其功能就是修改已經(jīng)聲明過(guò)的變量所存放的內(nèi)容。賦值運(yùn)算符也有很多結(jié)合算術(shù)、邏輯、位運(yùn)算符的用法,思路都是一樣的,以 += 為例。例如計(jì)算 a += 1, 可以等價(jià)于 a = a + 1,即先計(jì)算 a + 1 的值,再將 a + 1 的結(jié)果,放入 a 中。
package main
import "fmt"
func main() {
var a int
a = 10
fmt.Println("執(zhí)行 a = 10 后 : a = ", a)
a += 10
fmt.Println("執(zhí)行 a += 10 后 : a = ", a)
a -= 1
fmt.Println("執(zhí)行 a -= 1 后 : a = ", a)
a *= 2
fmt.Println("執(zhí)行 a *= 2 后 : a = ", a)
a /= 3
fmt.Println("執(zhí)行 a /= 3 后 : a = ", a)
a %= 10
fmt.Println("執(zhí)行 a %= 10 后 : a = ", a)
a <<= 1
fmt.Println("執(zhí)行 a <<= 1 后 : a = ", a)
a >>= 1
fmt.Println("執(zhí)行 a >>= 1 后 : a = ", a)
a &= 10
fmt.Println("執(zhí)行 a &= 10 后 : a = ", a)
a |= 10
fmt.Println("執(zhí)行 a |= 10 后 : a = ", a)
a ^= 10
fmt.Println("執(zhí)行 a %= 10 后 : a = ", a)
a %= 10
fmt.Println("執(zhí)行 a %= 10 后 : a = ", a)
a %= 10
fmt.Println("執(zhí)行 a %= 10 后 : a = ", a)
}到此這篇關(guān)于GO 之運(yùn)算符號(hào)的具體使用的文章就介紹到這了,更多相關(guān)GO 運(yùn)算符號(hào)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Go module和GoLand初始化一個(gè)Go項(xiàng)目的方法
這篇文章主要介紹了使用Go module和GoLand初始化一個(gè)Go項(xiàng)目,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
Go的slices.Grow優(yōu)雅擴(kuò)容的實(shí)現(xiàn)
本文主要介紹了Go的slices.Grow優(yōu)雅擴(kuò)容的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2026-06-06
golang中連接mysql數(shù)據(jù)庫(kù)
這篇文章主要介紹了golang中連接mysql數(shù)據(jù)庫(kù)的步驟,幫助大家更好的理解和學(xué)習(xí)go語(yǔ)言,感興趣的朋友可以了解下2020-12-12
Go語(yǔ)言并發(fā)之context標(biāo)準(zhǔn)庫(kù)的使用詳解
Context的出現(xiàn)是為了解決在大型應(yīng)用程序中的并發(fā)環(huán)境下,協(xié)調(diào)和管理多個(gè)goroutine之間的通信、超時(shí)和取消操作的問(wèn)題,本文就來(lái)和大家簡(jiǎn)單聊聊它的具體用法,希望對(duì)大家有所幫助2023-06-06
sublime3+Golang+代碼補(bǔ)全的實(shí)現(xiàn)
本文主要介紹了sublime3+Golang+代碼補(bǔ)全的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
一文帶你掌握Golang中panic與recover的使用方法
這篇文章主要介紹了Golang中panic與recover的作用和使用方法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的小伙伴可以參考一下2023-04-04
go select編譯期的優(yōu)化處理邏輯使用場(chǎng)景分析
select 是 Go 中的一個(gè)控制結(jié)構(gòu),類(lèi)似于用于通信的 switch 語(yǔ)句。每個(gè) case 必須是一個(gè)通信操作,要么是發(fā)送要么是接收。接下來(lái)通過(guò)本文給大家介紹go select編譯期的優(yōu)化處理邏輯使用場(chǎng)景分析,感興趣的朋友一起看看吧2021-06-06
golang實(shí)現(xiàn)ping命令的完整代碼
這篇文章給大家介紹了如何使用golang實(shí)現(xiàn)ping命令,文中給大家介紹了完整的實(shí)現(xiàn)代碼,并有詳細(xì)的圖文講解,對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-02-02
golang?MySQL實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)表存儲(chǔ)獲取操作示例
這篇文章主要為大家介紹了golang?MySQL實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)表存儲(chǔ)獲取操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11

