運算符號又稱運算子,是每個程式語言中的基本元素之一,用於執行各種數學運算與邏輯運算的符號。在 Go 當然也提供了一系列的基本運算符號。
算術運算有:加法 +, 減髮 -, 乘法 *, 除法 /, 取餘數 %。
package main
import "fmt"
func main() {
var x int
x = 3*3 + 10/5 - 1
fmt.Println(x)
}
執行結果:
10
package main
import "fmt"
func main() {
var dividend int
dividend = 17
var divisor int
divisor = 5
// 使用餘數運算符號取餘數
var remainder int
remainder = dividend % divisor
// 輸出結果
fmt.Printf("%d 除以 %d 的餘數是 %d\n", dividend, divisor, remainder)
}
執行結果
17 除以 5 的餘數是 2
又稱賦值運算,用於將一個值賦值給變數。簡單來說在程式中可以把資料放進變數中。
在上一個算術運算練習就有使用到指定運算。
package main
import "fmt"
func main() {
var x int
// 指定運算在這
x = 3*3 + 10/5 - 1
fmt.Println(x)
}
透過 = 將計算的結果 10 ,指定給或放進 x 變數。
package main
import "fmt"
func main() {
var x int
x = 3*3 + 10/5 - 1
fmt.Println(x)
x = 5
fmt.Println(x)
}
執行結果
10
5
為甚麼上面結果會印出 10 及 5?
因為當 x = 5 時,此時已經將 5 指定給 x,所以之前的 10 會被新的覆蓋掉。
很常在程式中看到以下的程式碼:
package main
import "fmt"
func main() {
var x int
x = 5
x = x + 1
fmt.Println(x)
}
執行結果:
6
翻成中文的意思就是,宣告 x 為整數變數,將 5 指定給 x,再將 x 的資料 +1 並指定給 x,最後印出 6。
但上面的程式也可以寫成這樣以下這樣:
package main
import "fmt"
func main() {
var x int
x = 5
x += 1 // 等同 x = x + 1
fmt.Println(x)
}
執行結果:
6
至於其他的 -=, *=, /= 是一樣的意思,如下:
package main
import "fmt"
func main() {
var x int
x = 5
x *= 2
fmt.Println(x)
x /= 5
fmt.Println(x)
x -= 1
fmt.Println(x)
}
執行結果:
10
2
1
在程式中可以簡單方便的操作單一資料,僅作用於一個操作數或變數的運算。它們通常不涉及其他操作數,只改變一個值的狀態或返回一個新值。在迴圈中常常看見這類的運算符號。
分別有 ++, --:
package main
import "fmt"
func main() {
var x int
x = 5
x ++
fmt.Println(x)
}
執行結果:
6
出來的結果會是 6,其實 x++ 就只是把 x 的資料去 +1 而已。
比較運算符號是用於比較兩個值之間的關係,通常返回布林值 (true 或 false) 用以表示比較的結果。
分別有:等於 ==, 不等於 !=, 小於 <, 大於 >, 小於等於 <=, 大於等於 >=, 不等於 !=
package main
import "fmt"
func main() {
var x int
x = 5
x = 4 > 3
fmt.Println(x)
}
當我 build 後,會出現以下的錯誤訊息。
$ go build op.go
# command-line-arguments
./op.go:15:6: cannot use 4 > 3 (untyped bool constant true) as int value in assignment
這是因為一開始宣告時,使用的是整數,而 x = 4 > 3 的結果為布林值,所以變數型態也需要為布林值,所以要改成以下這樣:
package main
import "fmt"
func main() {
var x int
x = 5
x ++
fmt.Println(x)
var result bool
resuㄠt = 4 > 3
fmt.Println(result)
}
執行結果:
6
true
這樣修改過後就會是 true。
package main
import "fmt"
func main(){
var result bool = 4 == 4
fmt.Println(result)
result = 4 != 4
fmt.Println(result)
}
執行結果:
true
false
邏輯運算符是針對布林值 (true/false) 執行邏輯操作,用於結合或修改布林表達式的值。
! 為邏輯 NOT 運算符號。用於反轉布林值,簡單來說就是把 true 變成 false, false 變成 true。
package main
import "fmt"
func main(){
var result bool =!true
fmt.Println(result)
}
執行結果:
false
上面程式碼的結果會因為 ! 的關係變成 false。
&& 為邏輯 AND 運算符號。當兩個操作數都為 true 時,結果為 true;否則結果為 false。
package main
import "fmt"
func main(){
var result bool = true && false
fmt.Println(result)
}
執行結果:
false
結果會是 false
|| 邏輯 OR 運算符號。當兩個操作數中至少有一個為 true 時,結果為 true;否則結果為 false。
package main
import "fmt"
func main(){
var result bool = true || false
fmt.Println(result)
}
執行結果:
true
結果會是 true。
參考資料: