Go中使用操作符進(jìn)行數(shù)學(xué)運(yùn)算的示例代碼
引言
數(shù)字在編程中很常見。它們用于表示諸如:屏幕尺寸、地理位置、金錢和點(diǎn)數(shù)、視頻中經(jīng)過的時(shí)間、游戲角色的位置、分配數(shù)字代碼的顏色等等。
在編程中有效地執(zhí)行數(shù)學(xué)運(yùn)算是一項(xiàng)需要開發(fā)的重要技能,因?yàn)槟憬?jīng)常會(huì)用到數(shù)字。雖然對數(shù)學(xué)的深入理解肯定可以幫助你成為更好的程序員,但這不是先決條件。如果你沒有數(shù)學(xué)背景,試著把數(shù)學(xué)看作是一種工具來完成你想要達(dá)到的目標(biāo),是一種提高你邏輯思維的方法。
我們將使用Go中最常用的兩種數(shù)字[數(shù)據(jù)類型]整數(shù)和浮點(diǎn)數(shù):
- [Integers]是整數(shù),可以是積極的,消極的,或0(…,
-1
,0
,1
,…)。 - [Floats]是包含小數(shù)點(diǎn)的實(shí)數(shù),例如
9.0
或-2.25
…
本教程將回顧Go中可用于數(shù)字?jǐn)?shù)據(jù)類型的運(yùn)算符。
運(yùn)算符
運(yùn)算符是一個(gè)表示操作的符號(hào)或函數(shù)。例如,在數(shù)學(xué)中,加號(hào)或’ + '是表示加法的運(yùn)算符。
在Go中,我們將看到一些從數(shù)學(xué)中引入的熟悉的操作符。不過,我們將使用的其他操作符是計(jì)算機(jī)編程特有的。
下面是Go中數(shù)學(xué)相關(guān)運(yùn)算符的快速參考表。我們將在本教程中介紹以下所有操作。
運(yùn)算符 | 返回什么 |
---|---|
x + y | x與y的和 |
x - y | x和y的差值 |
-x | 改變x的符號(hào) |
+x | x的恒等式 |
x * y | x和y的乘積 |
x / y | x和y的商 |
x % y | x / y 的余數(shù) |
我們還將介紹復(fù)合賦值運(yùn)算符,包括+=
和*=
,它們將算術(shù)運(yùn)算符與=
運(yùn)算符結(jié)合在一起。
加法和減法
在Go中,加法和減法運(yùn)算符的表現(xiàn)與數(shù)學(xué)中的一樣。事實(shí)上,您可以將Go編程語言用作計(jì)算器。
讓我們看一些例子,從整數(shù)開始:
fmt.Println(1 + 5)
Output6
除了直接將整數(shù)傳遞給fmt.Println
語句之外,我們可以使用如下語法初始化變量以表示整數(shù)值:
a := 88 b := 103 fmt.Println(a + b)
Output191
因?yàn)檎麛?shù)既可以是正數(shù),也可以是負(fù)數(shù)(0也是),所以可以將負(fù)數(shù)和正數(shù)相加:
c := -36 d := 25 fmt.Println(c + d)
Output-11
浮點(diǎn)數(shù)的加法操作類似:
e := 5.5 f := 2.5 fmt.Println(e + f)
Output8
因?yàn)槲覀儗蓚€(gè)浮點(diǎn)數(shù)相加,所以Go返回了一個(gè)帶小數(shù)點(diǎn)的浮點(diǎn)值。然而,由于在本例中小數(shù)點(diǎn)是零,fmt.Println
刪除了小數(shù)格式。為了正確格式化輸出,我們可以使用fmt.Printf
和動(dòng)詞%.2f
,它將格式化為兩位小數(shù),如下例所示:
fmt.Printf("%.2f", e + f)
Output8.00
減法的語法與加法相同,只是要把運(yùn)算符從加號(hào)(+
)改為減號(hào)(-
):
g := 75.67 h := 32.0 fmt.Println(g - h)
Output43.67
在Go中,我們只能在相同的數(shù)據(jù)類型上使用操作符。我們不能將int
和float64
相加
i := 7 j := 7.0 fmt.Println(i + j)
Outputi + j (mismatched types int and float64)
試圖在不相同的數(shù)據(jù)類型上使用運(yùn)算符將導(dǎo)致編譯器錯(cuò)誤。
一元數(shù)學(xué)表達(dá)式
一元數(shù)學(xué)表達(dá)式只包含一個(gè)成分或元素。在Go中,我們可以使用加號(hào)和減號(hào)作為單個(gè)元素與值配對:返回值的單位符號(hào)(+
),或更改值的符號(hào)(-
)。
雖然加號(hào)不常用,但它表示值的身份。我們可以使用加號(hào)來表示正數(shù):
i := 3.3 fmt.Println(+i)
Output3.3
當(dāng)我們用加號(hào)表示一個(gè)負(fù)數(shù)時(shí),它也會(huì)返回該值的標(biāo)識(shí)符,在這個(gè)例子中,它會(huì)返回一個(gè)負(fù)數(shù):
j := -19 fmt.Println(+j)
Output-19
對于負(fù)數(shù),加號(hào)返回相同的負(fù)數(shù)。
然而,減號(hào)會(huì)改變值的正負(fù)號(hào)。因此,當(dāng)我們傳入一個(gè)正值時(shí),我們會(huì)發(fā)現(xiàn)值之前的減號(hào)將返回負(fù)值:
k := 3.3 fmt.Println(-k)
Output-3.3
或者,當(dāng)使用減號(hào)操作符處理負(fù)數(shù)時(shí),將返回一個(gè)正數(shù):
j := -19 fmt.Println(-j)
Output19
由加號(hào)和減號(hào)表示的一元算術(shù)運(yùn)算將返回值的恒等符號(hào)(如+i
),或相反的符號(hào)(如-i
)。
乘法和除法
就像加法和減法一樣,乘法和除法看起來很像數(shù)學(xué)中的運(yùn)算。我們將在Go中用于乘法的符號(hào)是*
,用于除法的符號(hào)是/
。
下面是用兩個(gè)浮點(diǎn)數(shù)在Go中做乘法的例子:
k := 100.2 l := 10.2 fmt.Println(k * l)
Output1022.04
在Go中,根據(jù)我們除法的數(shù)值類型,除法具有不同的特征。
如果我們要除以整數(shù),Go的/
運(yùn)算符會(huì)執(zhí)行整除操作,對于商x,返回的是小于或等于x的最大整數(shù)。
如果你運(yùn)行以下除以80 / 6
的例子,你將得到13
作為輸出,數(shù)據(jù)類型將是int
:
package main import ( "fmt" ) func main() { m := 80 n := 6 fmt.Println(m / n) }
Output13
如果期望的輸出是浮點(diǎn)數(shù),則必須在除法之前顯式轉(zhuǎn)換值。
你可以通過在你的值周圍包裝你想要的浮點(diǎn)類型float32()
或float64()
來實(shí)現(xiàn):
package main import ( "fmt" ) func main() { s := 80 t := 6 r := float64(s) / float64(t) fmt.Println(r) }
Output13.333333333333334
模
%
操作符是模,它返回除法后的余數(shù)而不是商。這對于查找是同一個(gè)數(shù)的倍數(shù)的數(shù)很有用。
來看一個(gè)求模的例子:
o := 85 p := 15 fmt.Println(o % p)
Output10
具體來說,85
除以15
返回的是5
的商余數(shù)10
。我們的程序在這里返回值10
,因?yàn)榍竽_\(yùn)算符返回除法表達(dá)式的余數(shù)。
要對float64
數(shù)據(jù)類型進(jìn)行模運(yùn)算,你將使用math
包中的Mod
函數(shù):
package main import ( "fmt" "math" ) func main() { q := 36.0 r := 8.0 s := math.Mod(q, r) fmt.Println(s) }
Output4
運(yùn)算符優(yōu)先級(jí)
在Go中,就像在數(shù)學(xué)中一樣,我們需要記住,運(yùn)算符將按優(yōu)先級(jí)順序進(jìn)行計(jì)算,而不是從左到右或從右到左。
看看下面的數(shù)學(xué)表達(dá)式:
u = 10 + 10 * 5
我們可以從左到右讀取它,但乘法將首先執(zhí)行,因此如果我們打印u
,我們將收到以下值:
Output60
這是因?yàn)?code>10 * 5的計(jì)算結(jié)果是50
,然后我們加上10
來返回60
作為最終結(jié)果。
如果我們想將值10
加到10
,然后乘以5
,我們在Go中使用括號(hào),就像我們在數(shù)學(xué)中使用的那樣:
u := (10 + 10) * 5 fmt.Println(u)
Output100
記住運(yùn)算順序的一種方法是使用縮寫PEMDAS:
優(yōu)先級(jí) | 標(biāo)志 | 代表 |
---|---|---|
1 | P | 括號(hào) |
2 | E | 指數(shù) |
3 | M | 乘法 |
4 | D | 除法 |
5 | A | 加法 |
6 | S | 減法 |
你可能熟悉另一個(gè)表示操作順序的縮寫,例如BEDMAS或BODMAS。無論哪種首字母縮寫最適合您,在Go中執(zhí)行數(shù)學(xué)操作時(shí)請盡量記住它,以便返回您期望的結(jié)果。
賦值操作符
最常見的賦值運(yùn)算符已經(jīng)用過:等號(hào)=
。賦值運(yùn)算符=
將右邊的值賦給左邊的變量。例如,v = 23
將整數(shù)23
的值賦給變量v
。
編程時(shí),通常使用復(fù)合賦值操作符,對變量的值進(jìn)行操作,然后將得到的新值賦給該變量。這些復(fù)合操作符結(jié)合了算術(shù)操作符和=
操作符。因此,對于加法運(yùn)算,我們將+
和=
結(jié)合起來得到復(fù)合運(yùn)算符+=
。讓我們看看它是什么樣子:
w := 5 w += 1 fmt.Println(w)
Output6
首先,我們將變量w
的值設(shè)置為5
,然后使用+=
復(fù)合賦值操作符將右值與左值相加,然后將結(jié)果賦值給w
。
復(fù)合賦值運(yùn)算符經(jīng)常用于for
循環(huán)的情況,當(dāng)你想多次重復(fù)一個(gè)過程時(shí),你會(huì)使用它:
package main import "fmt" func main() { values := []int{0, 1, 2, 3, 4, 5, 6} for _, x := range values { w := x w *= 2 fmt.Println(w) } }
Output0
2
4
6
8
10
12
通過使用for
循環(huán)來迭代名為values
的切片,你能夠自動(dòng)化*=
操作符的處理,該操作符將變量w
乘以數(shù)字2
,然后將結(jié)果賦值給變量w
。
對于本教程中討論的每個(gè)算術(shù)運(yùn)算符,Go都有一個(gè)復(fù)合賦值運(yùn)算符。
添加后再賦值:
y += 1
減去后再賦值:
y -= 1
相乘再賦值:
y *= 2
相除再賦值:
y /= 3
要返回余數(shù),然后再賦值:
y %= 3
當(dāng)需要遞增或遞減操作時(shí),或者需要自動(dòng)化程序中的某些過程時(shí),復(fù)合賦值操作符可能很有用。
總結(jié)
到此這篇關(guān)于Go中使用操作符進(jìn)行數(shù)學(xué)運(yùn)算的示例代碼的文章就介紹到這了,更多相關(guān)Go 操作符數(shù)學(xué)運(yùn)算內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
golang服務(wù)報(bào)錯(cuò):?write:?broken?pipe的解決方案
在開發(fā)在線客服系統(tǒng)的時(shí)候,看到日志里有一些錯(cuò)誤信息,下面這篇文章主要給大家介紹了關(guān)于golang服務(wù)報(bào)錯(cuò):?write:?broken?pipe的解決方案,需要的朋友可以參考下2022-09-09Go實(shí)現(xiàn)簡易R(shí)PC框架的方法步驟
本文旨在講述 RPC 框架設(shè)計(jì)中的幾個(gè)核心問題及其解決方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-03-03Go語言函數(shù)的延遲調(diào)用(Deferred Code)詳解
本文將介紹Go語言函數(shù)和方法中的延遲調(diào)用,正如名稱一樣,這部分定義不會(huì)立即執(zhí)行,一般會(huì)在函數(shù)返回前再被調(diào)用,我們通過一些示例來了解一下延遲調(diào)用的使用場景2022-07-07Go 自動(dòng)升級(jí)依賴版本的幾種方法實(shí)現(xiàn)
Go語言使用GoModules進(jìn)行依賴管理,可以通過多種方式自動(dòng)升級(jí)依賴,本文就來介紹Go 自動(dòng)升級(jí)依賴版本的7種方法,感興趣的可以了解一下2025-03-03淺析Go項(xiàng)目中的依賴包管理與Go?Module常規(guī)操作
這篇文章主要為大家詳細(xì)介紹了Go項(xiàng)目中的依賴包管理與Go?Module常規(guī)操作,文中的示例代碼講解詳細(xì),對我們深入了解Go語言有一定的幫助,需要的可以跟隨小編一起學(xué)習(xí)一下2023-10-10