快轉到主要內容
  1. Go 基礎入門/

運算符

目錄
Go基礎入門 - 系列文
5: ➫

05: 本節課是 Go 運算符和格式化字串(Format Verbs)的基本介紹。

運算符
#

1. 基本算術運算符
#

  • 加、減、乘、除:這些運算符用於基本四則運算。
  • 餘(Modulus):使用 % 符號,例如 8 % 3 結果為 2。
      fmt.Println(5 + 3)  // 輸出: 8
      fmt.Println(5 - 3)  // 輸出: 2
      fmt.Println(5 * 3)  // 輸出: 15
      fmt.Println(5 / 3)  // 輸出: 1
      fmt.Println(8 % 3)  // 輸出: 2
    

2. 自增和自減運算符
#

  • 自增(i++):等同於 i = i + 1
  • 自減(i--):等同於 i = i - 1
  • 在 Go 中,自增和自減只能作為獨立語句,不能作為表達式的一部分。
      var i int
      i++
      fmt.Println(i)  // 輸出: 1
      i--
      fmt.Println(i)  // 輸出: 0
    

3. 二進制位運算符
#

  • 位移運算符:
    • 右移(>>):例如 b >> 2,將二進制位向右移動指定位數。
    • 左移(<<):例如 b << 2,將二進制位向左移動指定位數。
  • 按位運算符:
    • 按位與(&):兩位均為1時結果為1。
    • 按位或(|):兩位有一個為1時結果為1。
    • 按位異或(^):兩位不同時結果為1。
      var b uint = 3 // 11 in binary
      fmt.Println(b >> 1)  // 輸出: 1 (11 -> 1)
      fmt.Println(b << 1)  // 輸出: 6 (11 -> 110)
      fmt.Println(b & 2)   // 輸出: 2 (11 & 10 -> 10)
      fmt.Println(b | 2)   // 輸出: 3 (11 | 10 -> 11)
      fmt.Println(b ^ 2)   // 輸出: 1 (11 ^ 10 -> 01)
    

4. 賦值運算符
#

  • 加等(+=)、減等(-=)、乘等(*=)等:這些都是賦值和算術操作的簡寫,例如 b += 3 等同於 b = b + 3
      var b int = 1
      b += 3
      fmt.Println(b)  // 輸出: 4
      b -= 2
      fmt.Println(b)  // 輸出: 2
      b *= 2
      fmt.Println(b)  // 輸出: 4
    

5. 比較運算符
#

  • 包括大於(>)、小於(<)、等於(==)、不等於(!=)等。
  • 比較操作返回布林值,表示比較結果。
      fmt.Println(5 > 3)   // 輸出: true
      fmt.Println(5 < 3)   // 輸出: false
      fmt.Println(5 == 5)  // 輸出: true
      fmt.Println(5 != 3)  // 輸出: true
    

6. 邏輯運算符
#

  • 與(&&)、或(||)、非(!)。
  • 用於布林值的邏輯操作,例如 bool1 && bool2
      fmt.Println(true && false)   // 輸出: false
      fmt.Println(true || false)   // 輸出: true
      fmt.Println(!true)           // 輸出: false
    

7. 特殊運算符
#

  • 取址符(&):用於獲取變量的內存地址。
  • 取值符(*):用於訪問指標指向的變量。
      var a int = 10
      var p *int = &a
      fmt.Println(*p)  // 輸出: 10
    

8. 運算符的優先級
#

  • 如果不確定運算符優先級,可以使用括號(())來明確運算順序。
  • 運算符優先級從高到低依次為:括號、取地址、乘除餘、加減等。

fmt格式化字串(Format Verbs)
#

1. 通用格式化字串
#

  • %v:用於輸出變量的值(value)。
  • %T:用於輸出變量的數據類型(type)。
  • %%:用於輸出百分號。
      var i int = 5
      fmt.Printf("%v, %T\n", i, i)  // 輸出: 5, int
    

2. 整數格式化
#

  • %b:二進制表示,無前綴。
  • %o:八進制表示,無前綴。
  • %d:十進制表示。
  • %x:小寫字母的十六進制表示。
  • %X:大寫字母的十六進制表示。
  • %U:Unicode格式表示,如 U+1234。
  • %c:該碼值對應的字符。
  • %q:單引號包圍的字符。
      var i int = 42
      fmt.Printf("%b, %o, %d, %x, %X, %U, %c, %q\n", i, i, i, i, i, i, i, i)
      // 輸出: 101010, 52, 42, 2a, 2A, U+002A, *, '*
    

3. 浮點數格式化
#

  • %f:默認的浮點數表示。
  • %.2f:保留兩位小數的浮點數。
  • %9.2f:最小寬度9,保留兩位小數。
  • %e%E:科學計數法表示的浮點數。
  • %g%G:根據數值大小選擇 %e%f 來格式化。
  • %b:科學計數法的二進制表示。
      var f float64 = 3.14159
      fmt.Printf("%f, %.2f, %9.2f, %e, %E, %g, %b\n", f, f, f, f, f, f, f)
      // 輸出: 3.141590, 3.14,      3.14, 3.141590e+00, 3.141590E+00, 3.14159, 6946802425218994p-49
    

4. 布林類型格式化
#

  • %t:布林值的默認表示(true 或 false)。
    var truth = true
    fmt.Printf("%t\n", truth) // 輸出: true
    

5. 字符串和byte切片格式化
#

  • %s:普通字符串。
  • %q:雙引號包圍的字符串。
  • %x:小寫的十六進制表示的字符串。
  • %X:大寫的十六進制表示的字符串。
    var str = "Hello, Go!"
    fmt.Printf("%s\n", str) // 輸出: Hello, Go!
    fmt.Printf("%q\n", str) // 輸出: "Hello, Go!"
    fmt.Printf("%x\n", str) // 輸出: 48656c6c6f2c20476f21
    fmt.Printf("%X\n", str) // 輸出: 48656C6C6F2C20476F21
    

6. 指標格式化
#

  • %p:0x開頭的十六進制表示的指標地址。
    var num = 42
    fmt.Printf("%p\n", &num) // 輸出: 0x地址 (地址會因執行而異)
    
Go基礎入門 - 系列文
5: ➫

相關文章

基本資料型別
06: 本節課是 Go 基本資料類型與指標概念的介紹。
組合型別
07: 本節課介紹了 Go 組合型別:陣列、slice和map的操作與遍歷。
結構體
08: 本節課介紹 Go 自定義數據類型與結構體的使用。並可模擬物件導向中的一些特性。