iT邦幫忙

2023 iThome 鐵人賽

DAY 5
0
Modern Web

起步Go!Let's Go!系列 第 5

[Day 05 ] Go 運算符號:舞動程式碼的魔杖

  • 分享至 

  • xImage
  •  

運算符號又稱運算子,是每個程式語言中的基本元素之一,用於執行各種數學運算與邏輯運算的符號。在 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 而已。

比較運算(>, <, >=, <=, ==, !=)

比較運算符號是用於比較兩個值之間的關係,通常返回布林值 (truefalse) 用以表示比較的結果。
分別有:等於 ==, 不等於 !=, 小於 <, 大於 >, 小於等於 <=, 大於等於 >=, 不等於 !=

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 變成 falsefalse 變成 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。

參考資料:

  1. Golang 基本運算符號 By 彭彭

上一篇
[ Day 04 ] Go 的資料型態及運用
下一篇
[ Day 06 ] Go 流程控制 - 要不要?if 就是這個問題
系列文
起步Go!Let's Go!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言