Golang 菜鳥教程

Golang 控制語句

Golang 函數(shù) & 方法

Golang 結(jié)構(gòu)體

Golang 切片 & 數(shù)組

Golang 字符串(String)

Golang 指針

Golang 接口

Golang 并發(fā)

Golang 異常(Error)

Golang 其他雜項(xiàng)

Go 語言運(yùn)算符

運(yùn)算符是任何編程語言的基礎(chǔ)。因此,在不使用運(yùn)算符的情況下,Go語言的功能是不完整的。運(yùn)算符允許我們對(duì)操作數(shù)執(zhí)行不同類型的運(yùn)算。在Go語言中,可以根據(jù)操作員的不同功能對(duì)其進(jìn)行分類:

算術(shù)運(yùn)算符

這些用于對(duì)Go語言中的操作數(shù)執(zhí)行算術(shù)/數(shù)學(xué)運(yùn)算:

  • 加法: “ +”運(yùn)算符將兩個(gè)操作數(shù)相加。例如,x + y。

  • 減法: “-”運(yùn)算符減去兩個(gè)操作數(shù)。例如,x-y。

  • 乘法: '*' 運(yùn)算符將兩個(gè)操作數(shù)相乘。例如,x * y。

  • 除法: '/' 運(yùn)算符將第一個(gè)操作數(shù)除以第二個(gè)。例如,x / y。

  • 求模:當(dāng)?shù)谝粋€(gè)操作數(shù)除以第二個(gè)操作數(shù)時(shí),'%'運(yùn)算符返回余數(shù)。例如,x%y。

注意: -,+,!,&,*,<-和^也稱為一元運(yùn)算符,一元運(yùn)算符的優(yōu)先級(jí)更高。++和—運(yùn)算符來自于語句,它們不是表達(dá)式,因此不在運(yùn)算符層次結(jié)構(gòu)中。

package main

import "fmt"

func main() {
    p := 34
    q := 20

    // 加法
    result1 := p + q
    fmt.Printf("計(jì)算結(jié)果 p + q = %d", result1)

    // 減法
    result2 := p - q
    fmt.Printf("\n計(jì)算結(jié)果 p - q = %d", result2)

    // 乘法
    result3 := p * q
    fmt.Printf("\n計(jì)算結(jié)果 p * q = %d", result3)

    // 除法
    result4 := p / q
    fmt.Printf("\n計(jì)算結(jié)果 p / q = %d", result4)

    // 求模
    result5 := p % q
    fmt.Printf("\n計(jì)算結(jié)果 p %% q = %d", result5)
}

輸出:

計(jì)算結(jié)果 p + q = 54
計(jì)算結(jié)果 p - q = 14
計(jì)算結(jié)果 p * q = 680
計(jì)算結(jié)果 p / q = 1
計(jì)算結(jié)果 p % q = 14

關(guān)系運(yùn)算符

關(guān)系運(yùn)算符用于比較兩個(gè)值。讓我們一一看一下:

  • '=='(等于)運(yùn)算符檢查兩個(gè)給定的操作數(shù)是否相等。如果相等,則返回true。否則,它返回false。例如,5 == 5將返回true。

  • '!='(不等于)運(yùn)算符檢查兩個(gè)給定的操作數(shù)是否相等。如果不相等,則返回true。否則,它返回false。它是'=='運(yùn)算符的精確布爾補(bǔ)碼。例如,5!= 5將返回false。

  • '>'(大于)運(yùn)算符檢查第一個(gè)操作數(shù)是否大于第二個(gè)操作數(shù)。如果大于,則返回true。否則,它返回false。例如,6> 5將返回true。

  • '<'(小于)運(yùn)算符檢查第一個(gè)操作數(shù)是否小于第二個(gè)操作數(shù)。如果小于,則返回true。否則,它返回false。例如,6 <5將返回false。

  • '> ='(大于等于)運(yùn)算符檢查第一個(gè)操作數(shù)是否大于或等于第二個(gè)操作數(shù)。如果大于等于,則返回true。否則,它返回false。例如,5> = 5將返回true。

  • “ <=”(小于等于)運(yùn)算符檢查第一個(gè)操作數(shù)是否小于或等于第二個(gè)操作數(shù)。如果小于等于,則返回true。否則,它返回false。例如,5 <= 5也將返回true。

package main

import "fmt"

func main() {
    p := 34
    q := 20

    // ‘=='(相等)
    result1 := p == q
    fmt.Println(result1)

    // ‘!='(不等于)
    result2 := p != q
    fmt.Println(result2)

    // ‘<‘(小于)
    result3 := p < q
    fmt.Println(result3)

    // ‘>'(大于)
    result4 := p > q
    fmt.Println(result4)

    // ‘>='(大于等于)
    result5 := p >= q
    fmt.Println(result5)

    // ‘<='(小于等于)
    result6 := p <= q
    fmt.Println(result6)

}

輸出:

false
true
false
true
true
false

邏輯運(yùn)算符

它們用于合并兩個(gè)或更多的條件/約束,或補(bǔ)充考慮的原始條件的評(píng)估。

  • 邏輯AND:當(dāng)考慮的兩個(gè)條件都滿足時(shí),&&操作符返回true。否則返回false。例如,當(dāng)a和b都為真(即非零)時(shí),a && b返回真。

  • 邏輯或: 當(dāng)其中一個(gè)(或兩個(gè))條件滿足時(shí),“||”操作符返回true。否則返回false。例如,如果a或b中的一個(gè)為真(即非零),|| b返回true。當(dāng)然,當(dāng)a和b都為真時(shí),它返回true。

  • 邏輯非: 即不滿足考慮條件,“!” 運(yùn)算符返回true。否則,它返回false。例如,如果a為假,即a = 0,則!a返回true。

package main

import "fmt"

func main() {
    var p int = 23
    var q int = 60

    if p != q && p <= q {
        fmt.Println("True")
    }

    if p != q || p <= q {
        fmt.Println("True")
    }

    if !(p == q) {
        fmt.Println("True")
    }

}

輸出:

True
True
True

按位運(yùn)算符

在Go語言中,有6個(gè)按位運(yùn)算符可按位工作或用于逐位操作。以下是按位運(yùn)算符:

  • &(按位與):將兩個(gè)數(shù)字作為操作數(shù),并對(duì)兩個(gè)數(shù)字的每一位進(jìn)行“與”運(yùn)算。僅當(dāng)兩個(gè)位均為1時(shí),AND的結(jié)果才為1。

  • | (按位或):將兩個(gè)數(shù)字作為操作數(shù),并對(duì)兩個(gè)數(shù)字的每一位進(jìn)行“或”運(yùn)算。兩個(gè)位中的任何一個(gè)為1,OR的結(jié)果為1。

  • ^(按位XOR):將兩個(gè)數(shù)字作為操作數(shù),并對(duì)兩個(gè)數(shù)字的每一位進(jìn)行XOR。如果兩個(gè)位不同,則XOR的結(jié)果為1。

  • <<(左移):取兩個(gè)數(shù)字,左移第一個(gè)操作數(shù)的位,第二個(gè)操作數(shù)決定移位的位數(shù)。

  • >>(右移):取兩個(gè)數(shù)字,右移第一個(gè)操作數(shù)的位,第二個(gè)操作數(shù)決定移位的位數(shù)。

  • &^(AND NOT):(按位清除)運(yùn)算符,該運(yùn)算符的實(shí)際操作為&(^)操作。

package main

import "fmt"

func main() {
    p := 134
    q := 320

    // & (AND)
    result1 := p & q
    fmt.Printf("計(jì)算結(jié)果 p & q = %d", result1)

    // | (OR)
    result2 := p | q
    fmt.Printf("\n計(jì)算結(jié)果 p | q = %d", result2)

    // ^ (XOR)
    result3 := p ^ q
    fmt.Printf("\n計(jì)算結(jié)果 p ^ q = %d", result3)

    // << (左移)
    result4 := p << 1
    fmt.Printf("\n計(jì)算結(jié)果 p << 1 = %d", result4)

    // >> (右移)
    result5 := p >> 1
    fmt.Printf("\n計(jì)算結(jié)果 p >> 1 = %d", result5)

    // &^ (AND NOT)
    result6 := p &^ q
    fmt.Printf("\n計(jì)算結(jié)果 p &^ q = %d", result6)

}

輸出:

計(jì)算結(jié)果 p & q = 0
計(jì)算結(jié)果 p | q = 454
計(jì)算結(jié)果 p ^ q = 454
計(jì)算結(jié)果 p << 1 = 268
計(jì)算結(jié)果 p >> 1 = 67
計(jì)算結(jié)果 p &^ q = 134

賦值運(yùn)算符

賦值運(yùn)算符用于為變量賦值。賦值運(yùn)算符的左側(cè)操作數(shù)是一個(gè)變量,而賦值運(yùn)算符的右側(cè)操作數(shù)是一個(gè)值。右側(cè)的值必須與左側(cè)的變量具有相同的數(shù)據(jù)類型,否則編譯器將拋出錯(cuò)誤。不同類型的賦值運(yùn)算符如下所示:

  • “ =”(簡(jiǎn)單賦值):這是最簡(jiǎn)單的賦值運(yùn)算符。該運(yùn)算符用于將右側(cè)的值分配給左側(cè)的變量。

  • “ + =”(加法賦值):此運(yùn)算符是'+'和'='運(yùn)算符的組合。該運(yùn)算符首先將左側(cè)變量的當(dāng)前值添加到右側(cè)的值,然后將結(jié)果分配給左側(cè)的變量。

  • “-=”(減法賦值):此運(yùn)算符是'-'和'='運(yùn)算符的組合。該運(yùn)算符首先從右側(cè)的值中減去左側(cè)變量的當(dāng)前值,然后將結(jié)果分配給左側(cè)的變量。

  • “ * =”(乘法賦值):此運(yùn)算符是'*'和'='運(yùn)算符的組合。該運(yùn)算符首先將左側(cè)變量的當(dāng)前值乘以右側(cè)值,然后將結(jié)果分配給左側(cè)變量。

  • “ / =”(除法賦值):此運(yùn)算符是'/'和'='運(yùn)算符的組合。該運(yùn)算符首先將左側(cè)變量的當(dāng)前值除以右側(cè)值,然后將結(jié)果分配給左側(cè)變量。

  • “%=”(模賦值):此運(yùn)算符是“%”和“ =”運(yùn)算符的組合。該運(yùn)算符首先對(duì)左側(cè)變量的當(dāng)前值乘以右側(cè)變量的值,然后將結(jié)果賦給左側(cè)變量。

  • “&=”(按位與賦值):此運(yùn)算符是'&'和'='運(yùn)算符的組合。該運(yùn)算符首先將左側(cè)變量的當(dāng)前值與右側(cè)變量進(jìn)行“按位與”運(yùn)算,然后將結(jié)果分配給左側(cè)變量。

  • “ ^ =”(按位異或):此運(yùn)算符是'^'和'='運(yùn)算符的組合。該運(yùn)算符首先將左側(cè)變量的當(dāng)前值與右側(cè)變量進(jìn)行“按位異或”,然后將結(jié)果分配給左側(cè)變量。

  • “ | =”(按位或):此運(yùn)算符是“ |”和'='運(yùn)算符的組合。該運(yùn)算符首先將左邊變量的當(dāng)前值與右邊的值“按位或”,然后將結(jié)果分配給左邊的變量。

package main 
    
import "fmt"
    
func main() { 
   var p int = 38
    var q int = 70
       
   // “=”(簡(jiǎn)單賦值) 
   p = q 
   fmt.Println(p) 
       
   // “+=”(加法賦值) 
    p += q 
   fmt.Println(p) 
       
   //“-=”(減法賦值) 
   p-=q 
   fmt.Println(p) 
       
   // “*=”(乘法賦值) 
   p*= q 
   fmt.Println(p) 
       
   // “/=”(除法賦值) 
    p /= q 
   fmt.Println(p) 
      
    // “%=”(求模賦值) 
    p %= q 
   fmt.Println(p) 
      
}

輸出:

70
140
70
4900
70
0

雜項(xiàng)運(yùn)算符

  • &:此運(yùn)算符返回變量的地址。

  • *:此運(yùn)算符提供指向變量的指針。

  • <-:該運(yùn)算符的名稱為接收。它用于從通道接收值。

package main 
    
import "fmt"
    
func main() { 
  a := 94
     
//使用運(yùn)算符(&)和
//指針間接(*)運(yùn)算符
  b := &a  
  fmt.Println(*b)  
  *b = 67 
  fmt.Println(a)  
}

輸出:

94
67
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清