欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語(yǔ)言語(yǔ)法基礎(chǔ)之算術(shù)符示例詳解

 更新時(shí)間:2025年06月10日 10:44:15   作者:明明跟你說(shuō)過(guò)  
這篇文章主要介紹了Go語(yǔ)言語(yǔ)法基礎(chǔ)之算術(shù)符示例詳解,詳細(xì)講解算術(shù)、關(guān)系、邏輯、位、賦值及其他運(yùn)算符的用法與示例,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、引言

1、Go語(yǔ)言簡(jiǎn)介

Go語(yǔ)言,又稱(chēng)Golang,是由Google公司開(kāi)發(fā)的一種現(xiàn)代編程語(yǔ)言。它起源于2007年,并在2009年正式對(duì)外發(fā)布。Go語(yǔ)言旨在提高軟件開(kāi)發(fā)的效率、可靠性和可維護(hù)性,特別在處理并發(fā)性方面表現(xiàn)出色。

2、Go語(yǔ)言特點(diǎn)

  • 并發(fā)性支持:Go語(yǔ)言?xún)?nèi)置并發(fā)性支持,允許開(kāi)發(fā)者構(gòu)建高度并發(fā)和可擴(kuò)展的應(yīng)用。它提供了goroutine(輕量級(jí)線(xiàn)程)和channel(通信管道)等功能,簡(jiǎn)化了并發(fā)編程。
  • 垃圾回收:Go語(yǔ)言擁有高效的垃圾回收機(jī)制,自動(dòng)釋放不再使用的內(nèi)存。這減輕了開(kāi)發(fā)者管理內(nèi)存的負(fù)擔(dān),提高了程序的穩(wěn)定性和可靠性。
  • 類(lèi)型安全:Go語(yǔ)言是一種強(qiáng)類(lèi)型語(yǔ)言,提供了嚴(yán)格的類(lèi)型檢查機(jī)制。這有助于捕獲類(lèi)型錯(cuò)誤,確保代碼的可靠性。
  • 跨平臺(tái)性:Go語(yǔ)言編譯成可執(zhí)行文件后,可以在不同的操作系統(tǒng)(如Linux、Windows、macOS)上運(yùn)行,無(wú)需進(jìn)行重新編譯。
  • 高性能:Go語(yǔ)言編譯器生成高度優(yōu)化的機(jī)器代碼,使程序運(yùn)行速度快且資源消耗低。它特別適合處理高并發(fā)和數(shù)據(jù)密集型應(yīng)用。

二、算術(shù)符 

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

示例代碼

package main

import (
    "fmt"
)

func main() {
    a := 10.5
    b := 5.25

    // 加法
    sum := a + b
    fmt.Printf("Sum: %.2f\n", sum)

    // 減法
    difference := a - b
    fmt.Printf("Difference: %.2f\n", difference)

    // 乘法
    product := a * b
    fmt.Printf("Product: %.2f\n", product)

    // 除法
    quotient := a / b
    fmt.Printf("Quotient: %.2f\n", quotient)
}

輸出結(jié)果運(yùn)行上述代碼后,輸出結(jié)果如下:

Sum: 15.75
Difference: 5.25
Product: 55.13
Quotient: 2.00

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

在 Go 語(yǔ)言中,關(guān)系運(yùn)算符用于比較兩個(gè)值,并返回一個(gè)布爾值(true 或 false),表示比較的結(jié)果。關(guān)系運(yùn)算符主要包括以下幾種:

  • 等于 (==):檢查兩個(gè)操作數(shù)是否相等。
  • 不等于 (!=):檢查兩個(gè)操作數(shù)是否不相等。
  • 大于 (>):檢查左邊的操作數(shù)是否大于右邊的操作數(shù)。
  • 小于 (<):檢查左邊的操作數(shù)是否小于右邊的操作數(shù)。
  • 大于等于 (>=):檢查左邊的操作數(shù)是否大于或等于右邊的操作數(shù)。
  • 小于等于 (<=):檢查左邊的操作數(shù)是否小于或等于右邊的操作數(shù)。

示例代碼下面是一個(gè)簡(jiǎn)單的示例,展示了如何使用這些關(guān)系運(yùn)算符:

package main

import (
    "fmt"
)

func main() {
    a := 10
    b := 5

    // 等于
    isEqual := a == b
    fmt.Printf("%d == %d: %v\n", a, b, isEqual)

    // 不等于
    isNotEqual := a != b
    fmt.Printf("%d != %d: %v\n", a, b, isNotEqual)

    // 大于
    isGreater := a > b
    fmt.Printf("%d > %d: %v\n", a, b, isGreater)

    // 小于
    isLess := a < b
    fmt.Printf("%d < %d: %v\n", a, b, isLess)

    // 大于等于
    isGreaterOrEqual := a >= b
    fmt.Printf("%d >= %d: %v\n", a, b, isGreaterOrEqual)

    // 小于等于
    isLessOrEqual := a <= b
    fmt.Printf("%d <= %d: %v\n", a, b, isLessOrEqual)
}

輸出結(jié)果運(yùn)行上述代碼后,輸出結(jié)果如下:

10 == 5: false
10 != 5: true
10 > 5: true
10 < 5: false
10 >= 5: true
10 <= 5: false

3、邏輯運(yùn)算符 

在 Go 語(yǔ)言中,邏輯運(yùn)算符用于組合條件表達(dá)式,并返回布爾值。邏輯運(yùn)算符主要有三種:

  • 邏輯與 (&&):只有當(dāng)兩邊的操作數(shù)都為 true 時(shí),整個(gè)表達(dá)式才為 true。
  • 邏輯或 (||):只要任意一邊的操作數(shù)為 true,整個(gè)表達(dá)式就為 true。
  • 邏輯非 (!):反轉(zhuǎn)操作數(shù)的布爾值。

示例代碼下面是一個(gè)簡(jiǎn)單的示例,展示了如何使用這些邏輯運(yùn)算符:

package main

import (
    "fmt"
)

func main() {
    a := true
    b := false

    // 邏輯與 (&&)
    andResult := a && b
    fmt.Printf("%t && %t = %t\n", a, b, andResult)

    // 邏輯或 (||)
    orResult := a || b
    fmt.Printf("%t || %t = %t\n", a, b, orResult)

    // 邏輯非 (!)
    notA := !a
    fmt.Printf("!%t = %t\n", a, notA)
    notB := !b
    fmt.Printf("!%t = %t\n", b, notB)
}

輸出結(jié)果運(yùn)行上述代碼后,輸出結(jié)果如下:

true && false = false
true || false = true
!true = false
!false = true

4、位運(yùn)算符 

在 Go 語(yǔ)言中,位運(yùn)算符用于對(duì)整數(shù)類(lèi)型的變量或常量進(jìn)行按位操作。位運(yùn)算符主要包含以下幾個(gè):

  • 按位與 (&):對(duì)兩個(gè)操作數(shù)的每一位進(jìn)行與操作,對(duì)應(yīng)位都為 1 時(shí)結(jié)果為 1,否則為 0。
  • 按位或 (|):對(duì)兩個(gè)操作數(shù)的每一位進(jìn)行或操作,對(duì)應(yīng)位有一個(gè)為 1 時(shí)結(jié)果為 1,否則為 0。
  • 按位異或 (^):對(duì)兩個(gè)操作數(shù)的每一位進(jìn)行異或操作,對(duì)應(yīng)位相同為 0,不同為 1。
  • 按位取反 (^):對(duì)單個(gè)操作數(shù)的每一位進(jìn)行取反操作,1 變?yōu)?0,0 變?yōu)?1。
  • 左移 (<<):將操作數(shù)的二進(jìn)制表示向左移動(dòng)指定位數(shù),高位補(bǔ)零。
  • 右移 (>>):將操作數(shù)的二進(jìn)制表示向右移動(dòng)指定位數(shù),低位補(bǔ)零或符號(hào)擴(kuò)展(對(duì)于負(fù)數(shù))。

示例代碼下面是一個(gè)簡(jiǎn)單的示例,展示了如何使用這些位運(yùn)算符:

package main

import (
    "fmt"
)

func main() {
    a := 0b1010  // 二進(jìn)制表示為 1010,即十進(jìn)制的 10
    b := 0b1100  // 二進(jìn)制表示為 1100,即十進(jìn)制的 12

    // 按位與 (&)
    andResult := a & b
    fmt.Printf("a & b = %b (decimal: %d)\n", andResult, andResult)

    // 按位或 (|)
    orResult := a | b
    fmt.Printf("a | b = %b (decimal: %d)\n", orResult, orResult)

    // 按位異或 (^)
    xorResult := a ^ b
    fmt.Printf("a ^ b = %b (decimal: %d)\n", xorResult, xorResult)

    // 按位取反 (^)
    notResult := ^a
    fmt.Printf("^a = %b (decimal: %d)\n", notResult, notResult)

    // 左移 (<<)
    leftShiftResult := a << 2
    fmt.Printf("a << 2 = %b (decimal: %d)\n", leftShiftResult, leftShiftResult)

    // 右移 (>>)
    rightShiftResult := a >> 1
    fmt.Printf("a >> 1 = %b (decimal: %d)\n", rightShiftResult, rightShiftResult)
}

輸出結(jié)果運(yùn)行上述代碼后,輸出結(jié)果如下:

a & b = 1000 (decimal: 8)
a | b = 1110 (decimal: 14)
a ^ b = 0110 (decimal: 6)
^a = ...110101 (decimal: -11)  // 注意,按位取反在二進(jìn)制補(bǔ)碼表示下會(huì)有所不同
a << 2 = 101000 (decimal: 40)
a >> 1 = 101 (decimal: 5)

解釋按位與 (&):

  • a & b = 1010 & 1100 = 1000 (十進(jìn)制 8)

按位或 (|):

  • a | b = 1010 | 1100 = 1110 (十進(jìn)制 14)

按位異或 (^):

  • a ^ b = 1010 ^ 1100 = 0110 (十進(jìn)制 6)

按位取反 (^):

  • ^a = ^1010 (二進(jìn)制表示為補(bǔ)碼,具體取決于整數(shù)類(lèi)型大?。?/li>
  • 對(duì)于 int 類(lèi)型,取反的結(jié)果為 -11(在補(bǔ)碼表示下)

左移 (<<):

  • a << 2 = 1010 << 2 = 101000 (十進(jìn)制 40)

右移 (>>):

  • a >> 1 = 1010 >> 1 = 101 (十進(jìn)制 5)

應(yīng)用場(chǎng)景

  • 位運(yùn)算符在計(jì)算機(jī)科學(xué)中有廣泛的應(yīng)用,例如在算法優(yōu)化、網(wǎng)絡(luò)編程、數(shù)據(jù)壓縮等領(lǐng)域。此外,位運(yùn)算符還可以用來(lái)設(shè)置或清除標(biāo)志位、位掩碼操作等。

5、賦值運(yùn)算符 

在 Go 語(yǔ)言中,賦值運(yùn)算符用于將一個(gè)值賦給一個(gè)變量或表達(dá)式。除了基本的賦值運(yùn)算符 = 之外,Go 還支持一系列復(fù)合賦值運(yùn)算符,這些運(yùn)算符結(jié)合了算術(shù)運(yùn)算符或其他運(yùn)算符的功能與賦值操作。

基本賦值運(yùn)算符 =基本的賦值運(yùn)算符 = 用于將一個(gè)值賦給一個(gè)變量。

package main

import (
    "fmt"
)

func main() {
    a := 10
    fmt.Println("Initial value of a:", a)

    // 使用 = 賦值
    a = 20
    fmt.Println("Value of a after assignment:", a)
}

輸出結(jié)果:

Initial value of a: 10
Value of a after assignment: 20

復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符結(jié)合了算術(shù)運(yùn)算符或其他運(yùn)算符的功能與賦值操作。常見(jiàn)的復(fù)合賦值運(yùn)算符包括:

  • 加法賦值 (+=):將變量的當(dāng)前值與另一個(gè)值相加,并將結(jié)果賦給該變量。
  • 減法賦值 (-=):將變量的當(dāng)前值與另一個(gè)值相減,并將結(jié)果賦給該變量。
  • 乘法賦值 (*=):將變量的當(dāng)前值與另一個(gè)值相乘,并將結(jié)果賦給該變量。
  • 除法賦值 (/=):將變量的當(dāng)前值與另一個(gè)值相除,并將結(jié)果賦給該變量。
  • 取模賦值 (%=):將變量的當(dāng)前值與另一個(gè)值取模,并將結(jié)果賦給該變量。
  • 按位與賦值 (&=):對(duì)變量的當(dāng)前值與另一個(gè)值按位與,并將結(jié)果賦給該變量。
  • 按位或賦值 (|=):對(duì)變量的當(dāng)前值與另一個(gè)值按位或,并將結(jié)果賦給該變量。
  • 按位異或賦值 (^=):對(duì)變量的當(dāng)前值與另一個(gè)值按位異或,并將結(jié)果賦給該變量。
  • 左移賦值 (<<=):將變量的當(dāng)前值左移一定位數(shù),并將結(jié)果賦給該變量。
  • 右移賦值 (>>=):將變量的當(dāng)前值右移一定位數(shù),并將結(jié)果賦給該變量。

示例代碼下面是一個(gè)簡(jiǎn)單的示例,展示了如何使用這些復(fù)合賦值運(yùn)算符:

package main

import (
    "fmt"
)

func main() {
    a := 10
    b := 5

    fmt.Println("Initial value of a:", a)
    fmt.Println("Initial value of b:", b)

    // 加法賦值
    a += b
    fmt.Println("Value of a after += b:", a)

    // 減法賦值
    a -= b
    fmt.Println("Value of a after -= b:", a)

    // 乘法賦值
    a *= b
    fmt.Println("Value of a after *= b:", a)

    // 除法賦值
    a /= b
    fmt.Println("Value of a after /= b:", a)

    // 取模賦值
    a %= b
    fmt.Println("Value of a after %= b:", a)

    // 按位與賦值
    a &= 0b1100
    fmt.Println("Value of a after &= 0b1100:", a)

    // 按位或賦值
    a |= 0b0011
    fmt.Println("Value of a after |= 0b0011:", a)

    // 按位異或賦值
    a ^= 0b0101
    fmt.Println("Value of a after ^= 0b0101:", a)

    // 左移賦值
    a <<= 2
    fmt.Println("Value of a after <<= 2:", a)

    // 右移賦值
    a >>= 1
    fmt.Println("Value of a after >>= 1:", a)
}

輸出結(jié)果運(yùn)行上述代碼后,輸出結(jié)果如下:

Initial value of a: 10
Initial value of b: 5
Value of a after += b: 15
Value of a after -= b: 10
Value of a after *= b: 50
Value of a after /= b: 10
Value of a after %= b: 0
Value of a after &= 0b1100: 4
Value of a after |= 0b0011: 7
Value of a after ^= 0b0101: 6
Value of a after <<= 2: 24
Value of a after >>= 1: 12

6、其他運(yùn)算符(如&取地址、*解引用等) 

在 Go 語(yǔ)言中,除了算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符和位運(yùn)算符外,還有一些特殊的運(yùn)算符用于指針操作,以及其他用途的運(yùn)算符。這里主要介紹指針相關(guān)的運(yùn)算符 &(取地址) *(解引用),以及一些其他常用的運(yùn)算符。

指針相關(guān)的運(yùn)算符

  • 取地址 (&):
    • 用于獲取變量的內(nèi)存地址,返回的是指向該變量的指針。
  • 解引用 (*):
    • 用于訪(fǎng)問(wèn)指針?biāo)赶虻淖兞康闹怠?/li>

示例代碼下面是一個(gè)簡(jiǎn)單的示例,展示了如何使用取地址和解引用運(yùn)算符:

package main

import (
    "fmt"
)

func main() {
    // 聲明并初始化一個(gè)變量
    value := 10

    // 取得變量的地址
    addressOfValue := &value
    fmt.Printf("Address of value: %p\n", addressOfValue)

    // 解引用地址,獲取值
    unreferencedValue := *addressOfValue
    fmt.Printf("Unreferenced value: %d\n", unreferencedValue)

    // 修改指針指向的值
    *addressOfValue = 20
    fmt.Printf("Modified value via pointer: %d\n", value)
}

輸出結(jié)果運(yùn)行上述代碼后,輸出結(jié)果如下:

Address of value: 0xc000018048
Unreferenced value: 10
Modified value via pointer: 20

解釋

  • 取地址 (&):
    • addressOfValue := &value 獲取 value 變量的地址,并將其賦值給 addressOfValue。
  • 解引用 (*):
    • unreferencedValue := *addressOfValue 解引用 addressOfValue,訪(fǎng)問(wèn)其指向的值,并賦值給 unreferencedValue。
  • 修改指針指向的值:
    • *addressOfValue = 20 通過(guò)解引用 addressOfValue 來(lái)修改其指向的 value 變量的值。

其他運(yùn)算符除了指針相關(guān)的運(yùn)算符外,Go 語(yǔ)言還有其他一些常用的運(yùn)算符,例如:

  • 范圍運(yùn)算符 (range):
    • 用于迭代數(shù)組、切片、映射(maps)或通道(channels)中的元素。
  • 轉(zhuǎn)換運(yùn)算符 (T(expr)):
    • 用于將一個(gè)表達(dá)式轉(zhuǎn)換為另一種類(lèi)型。
  • 逗號(hào)運(yùn)算符 (comma):
    • 在 Go 語(yǔ)言中,逗號(hào)通常用于序列化多個(gè)表達(dá)式,如在聲明多個(gè)變量時(shí)使用。

示例代碼下面是一些其他運(yùn)算符的示例:

范圍運(yùn)算符 (range)

package main

import (
    "fmt"
)

func main() {
    // 使用 range 迭代切片
    slice := []int{1, 2, 3, 4, 5}
    for index, value := range slice {
        fmt.Printf("Index: %d, Value: %d\n", index, value)
    }
}

輸出結(jié)果

Index: 0, Value: 1
Index: 1, Value: 2
Index: 2, Value: 3
Index: 3, Value: 4
Index: 4, Value: 5

轉(zhuǎn)換運(yùn)算符 (T(expr))

package main

import (
    "fmt"
)

func main() {
    var floatVal float64 = 3.14
    intVal := int(floatVal) // 將 float64 轉(zhuǎn)換為 int
    fmt.Printf("Converted integer value: %d\n", intVal)
}

輸出結(jié)果

Converted integer value: 3

逗號(hào)運(yùn)算符 (comma)

在 Go 語(yǔ)言中,逗號(hào)主要用于聲明多個(gè)變量:

package main

import (
    "fmt"
)

func main() {
    a, b := 10, 20
    fmt.Printf("a: %d, b: %d\n", a, b)
}

輸出結(jié)果

a: 10, b: 20

總結(jié) 

到此這篇關(guān)于Go語(yǔ)言語(yǔ)法基礎(chǔ)之算術(shù)符的文章就介紹到這了,更多相關(guān)Go語(yǔ)言算術(shù)符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • golang 歸并排序,快速排序,堆排序的實(shí)現(xiàn)

    golang 歸并排序,快速排序,堆排序的實(shí)現(xiàn)

    本文主要介紹了golang 歸并排序,快速排序,堆排序的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 如何在Go語(yǔ)言中高效使用Redis的Pipeline

    如何在Go語(yǔ)言中高效使用Redis的Pipeline

    在 Redis 中,Pipeline 就像一條流水線(xiàn),它允許我們將多個(gè)命令一次性發(fā)送到服務(wù)器,下面我們就來(lái)看看如何在Go語(yǔ)言中高效使用Redis的Pipeline吧
    2024-11-11
  • Golang中使用Swagger生成API文檔的流程步驟

    Golang中使用Swagger生成API文檔的流程步驟

    Swagger 是一款強(qiáng)大的 API 文檔生成工具,可以幫助開(kāi)發(fā)者輕松創(chuàng)建、管理和展示 RESTful API 文檔,在本文中,我們將介紹如何在 Golang 項(xiàng)目中使用 Swagger 來(lái)生成 API 文檔,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2024-07-07
  • golang如何實(shí)現(xiàn)抓取IP地址的蜘蛛程序詳解

    golang如何實(shí)現(xiàn)抓取IP地址的蜘蛛程序詳解

    這篇文章主要給大家介紹了關(guān)于利用golang如何實(shí)現(xiàn)抓取IP地址的蜘蛛程序的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • RabbitMQ延時(shí)消息隊(duì)列在golang中的使用詳解

    RabbitMQ延時(shí)消息隊(duì)列在golang中的使用詳解

    延時(shí)隊(duì)列常使用在某些業(yè)務(wù)場(chǎng)景,使用延時(shí)隊(duì)列可以簡(jiǎn)化系統(tǒng)的設(shè)計(jì)和開(kāi)發(fā)、提高系統(tǒng)的可靠性和可用性、提高系統(tǒng)的性能,下面我們就來(lái)看看如何在golang中使用RabbitMQ的延時(shí)消息隊(duì)列吧
    2023-11-11
  • 學(xué)習(xí)使用Go反射的用法示例

    學(xué)習(xí)使用Go反射的用法示例

    這篇文章主要介紹了學(xué)習(xí)使用Go反射的用法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Golang線(xiàn)上內(nèi)存爆掉問(wèn)題排查(pprof)與解決

    Golang線(xiàn)上內(nèi)存爆掉問(wèn)題排查(pprof)與解決

    這篇文章主要介紹了Golang線(xiàn)上內(nèi)存爆掉問(wèn)題排查(pprof)與解決,涉及到數(shù)據(jù)敏感,文中代碼是我模擬線(xiàn)上故障的一個(gè)情況,好在我們程序都有添加pprof監(jiān)控,于是直接通過(guò)go tool pprof分析,需要的朋友可以參考下
    2024-04-04
  • go語(yǔ)言VScode?see?'go?help?modules'?(exit?status?1)問(wèn)題的解決過(guò)程

    go語(yǔ)言VScode?see?'go?help?modules'?(exit?statu

    最近上手學(xué)習(xí)go語(yǔ)言,準(zhǔn)備在VSCode上寫(xiě)程序的時(shí)候卻發(fā)現(xiàn)出了一點(diǎn)問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于go語(yǔ)言VScode?see?'go?help?modules'(exit?status?1)問(wèn)題的解決過(guò)程,需要的朋友可以參考下
    2022-07-07
  • gtoken替換jwt實(shí)現(xiàn)sso登錄的問(wèn)題小結(jié)

    gtoken替換jwt實(shí)現(xiàn)sso登錄的問(wèn)題小結(jié)

    這篇文章主要介紹了gtoken替換jwt實(shí)現(xiàn)sso登錄,主要介紹了替換jwt的原因分析及gtoken的優(yōu)勢(shì),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • 解析GOROOT、GOPATH、Go-Modules-三者的關(guān)系

    解析GOROOT、GOPATH、Go-Modules-三者的關(guān)系

    這篇文章主要介紹了解析GOROOT、GOPATH、Go-Modules-三者的關(guān)系,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10

最新評(píng)論