最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go基本數(shù)據(jù)類型的具體使用

 更新時間:2023年11月20日 11:42:11   作者:hope_wisdom  
本文主要介紹了Go的基本數(shù)據(jù)類型,包括布爾類型、整數(shù)類型、浮點(diǎn)數(shù)類型、復(fù)數(shù)類型、字符串類型,具有一定的參考價值,感興趣的可以了解一下

概述

上一節(jié)的內(nèi)容中,我們介紹了Go的基礎(chǔ)語法,包括:標(biāo)識符、關(guān)鍵字、行分隔符、var關(guān)鍵字、:=運(yùn)算符、空格、注釋、package、import、輸入輸出、運(yùn)算符、條件控制、循環(huán)等。在本節(jié)中,我們將介紹Go的基本數(shù)據(jù)類型。Go語言是一種靜態(tài)類型的編程語言,這也就意味著,聲明變量需要指定其具體類型,或者交由編譯器進(jìn)行自動推導(dǎo)。在Go語言中,數(shù)據(jù)類型是編程的基礎(chǔ),它定義了變量或表達(dá)式的存儲方式和行為。

布爾類型

布爾類型(Boolean)用于表示真或假的值,可以為true或false。布爾類型被聲明為bool,可以使用條件語句或邏輯運(yùn)算符進(jìn)行比較和操作。

package main

import "fmt"

func main() {
    var success bool = true
    if success {
        fmt.Println("Success")
    } else {
        fmt.Println("Failed")
    }
}

與C/C++語言不同,Go語言中的布爾值并不會隱式轉(zhuǎn)換為數(shù)字值0或1,反之亦然。另外,Go語言也不允許將整型強(qiáng)制轉(zhuǎn)換為布爾型。

package main

import "fmt"

func main() {
    var age int = 18
    // 不允許將整型強(qiáng)制轉(zhuǎn)換為布爾型,會發(fā)生編譯錯誤
    var larger bool = bool(age)
    // 布爾值不會隱式轉(zhuǎn)換為數(shù)字值,會發(fā)生編譯錯誤
    age = larger

    if larger {
        fmt.Println("Success")
    } else {
        fmt.Println("Failed")
    }
}

整數(shù)類型

整數(shù)類型(Integer)用于表示整數(shù)值,包括正數(shù)、負(fù)數(shù)和零。Go語言同時提供了有符號和無符號的整數(shù)類型,其中有符號整數(shù)包括:int8、int16、int32、int64,分別對應(yīng) 8、16、32、64位大小的有符號整數(shù),無符號整數(shù)包括:uint8、uint16、uint32、uint64,分別對應(yīng) 8、16、32、64位大小的無符號整數(shù)。

另外,還有兩種整數(shù)類型int和uint,分別對應(yīng)特定CPU平臺的字長。其中int表示有符號整數(shù),應(yīng)用最為廣泛,uint表示無符號整數(shù)。由于編譯器和計算機(jī)硬件的不同,int和uint所能表示的整數(shù)大小會在32位和64位之間變化。

注意:盡管在某些特定的運(yùn)行環(huán)境下,int、uint、int32、uint32的大小可能相等,但它們?nèi)匀粚儆诓煌臄?shù)據(jù)類型。比如:int類型的大小可能是32位,但需要把int類型當(dāng)做int32類型使用時,必須顯式對類型進(jìn)行轉(zhuǎn)換,反之亦然。

除了上述的基本整數(shù)類型,Go語言還提供了其他幾種整數(shù)類型,包括:

  • rune:該類型表示Unicode碼點(diǎn),通常用來表示一個Unicode字符。
  • byte:與uint8是同義詞,表示一個字節(jié)。
  • uintptr:該類型的大小不確定,與平臺和編譯器有關(guān),但足以存放指針。uintptr通常用于底層編程,特別是與C程序庫交互的地方。
package main

import "fmt"

func main() {
    var num1 int8 = 66
    var num2 uint16 = 3666
    var num3 int = 99
    fmt.Println(num1, num2, num3)

    // int不能直接轉(zhuǎn)換為int32,輸出:cannot use num3 
    // (variable of type int) as int32 value in variable declaration
    // var num4 int32 = num3
    // 使用類型轉(zhuǎn)換,可以將int轉(zhuǎn)換為int32
    var num4 int32 = int32(num3)
    fmt.Println(num4)

    var num5 byte = 100
    fmt.Println(num5)
}

浮點(diǎn)數(shù)類型

浮點(diǎn)數(shù)類型(Float)用于表示帶有小數(shù)點(diǎn)的數(shù)值,Go語言提供了float32(32位單精度浮點(diǎn)數(shù))和float64(64位雙精度浮點(diǎn)數(shù))兩種浮點(diǎn)數(shù)類型。單精度浮點(diǎn)數(shù)在內(nèi)存中占用32位(4字節(jié)),可以表示的范圍大約是±1.18E-38到±3.4E+38。雙精度浮點(diǎn)數(shù)在內(nèi)存中占用64位(8字節(jié)),可以表示的范圍更大,大約是±2.23E-308到±1.80E+308。在Go語言中,可以使用關(guān)鍵字float32、float64來分別聲明和初始化單精度浮點(diǎn)數(shù)、雙精度浮點(diǎn)數(shù)。

package main

import "fmt"
import "math"

func main() {
    var num1 float32 = 3.1415926535
    // 輸出: 3.1415927
    fmt.Println(num1)

    var num2 float64 = 3.1415926535
    // 輸出: 3.1415926535
    fmt.Println(num2)

    epsilon := 0.00001
    num3 := 3.1415926
    // 浮點(diǎn)數(shù)比較,輸出:equal
    if math.Abs(num2 - num3) < epsilon {
        fmt.Println("equal")
    } else {
        fmt.Println("not equal")
    }
}

注意:由于浮點(diǎn)數(shù)的精度問題,在進(jìn)行浮點(diǎn)數(shù)計算時可能會產(chǎn)生誤差。為了避免誤差問題,盡量避免進(jìn)行浮點(diǎn)數(shù)比較或直接比較浮點(diǎn)數(shù)的相等性,而應(yīng)使用一個小的容忍度值進(jìn)行比較。

復(fù)數(shù)類型

復(fù)數(shù)類型(Complex)用于表示復(fù)數(shù)值,由實(shí)部和虛部組成。Go語言提供了complex64(64位實(shí)數(shù)和虛數(shù)的復(fù)數(shù))和complex128(128位實(shí)數(shù)和虛數(shù)的復(fù)數(shù))兩種復(fù)數(shù)類型。

package main

import "fmt"

func main() {
    var num1 complex64 = 3.14 + 66i
    // 輸出復(fù)數(shù)的實(shí)部和虛部,輸出:3.140000 + 66.000000i
    fmt.Printf("%f + %fi\n", real(num1), imag(num1))

    var num2 complex64 = 10 + 10i
    var num = num1 + num2
    // 復(fù)數(shù)相加,輸出:13.140000 + 76.000000i
    fmt.Printf("%f + %fi\n", real(num), imag(num))
}

注意:Go語言的復(fù)數(shù)類型是支持加、減、乘、除等基本運(yùn)算的,可以使用相應(yīng)的運(yùn)算符進(jìn)行復(fù)數(shù)運(yùn)算。

字符串類型

字符串類型(String)用于表示文本數(shù)據(jù),字符串是由零個或多個字符組成的不可變序列。Go語言中的字符串是不可變的字節(jié)序列,每個字符串都由一個指向字節(jié)數(shù)組的指針和長度組成。字符串的長度可以通過len()函數(shù)獲取,而字符串的內(nèi)容可以通過索引訪問。

package main

import "fmt"

func main() {
    var str string = "Hello"
    length := len(str)
    // 輸出字符串長度:5
    fmt.Println(length)

    // 取第一個字符
    firstChar := str[0]
    // 取最后一個字符
    lastChar := str[len(str) - 1]
    // 輸出:H, o
    fmt.Printf("%c, %c\n", firstChar, lastChar)
}

字符串還可進(jìn)行連接、切片、比較、替換、分割等操作,可參考下面的示例代碼。

package main

import "fmt"
import "strings"

func main() {
    var str1 string = "Hello"
    str2 := "CSDN"

    // 字符串連接,輸出:Hello CSDN
    str := str1 + " " + str2
    fmt.Println(str)

    // 字符串切片,從索引0開始,到索引5結(jié)束(不包括5),輸出:Hello
    slice := str[0:5]
    fmt.Println(slice)

    // 字符串比較,輸出:larger
    if str1 > str2 {
        fmt.Println("larger")
    } else {
        fmt.Println("equal or smaller")
    }

    // 字符串替換,將"CSDN"替換為"Go",第四個參數(shù)為替換的次數(shù),-1表示替換所有匹配的子字符串
    newStr := strings.Replace(str, "CSDN", "Go", -1)
    // 輸出:Hello Go
    fmt.Println(newStr)

    // 字符串分割,以空格為分隔符,輸出:[Hello CSDN]
    subStrs := strings.Split(str, " ")
    fmt.Println(subStrs)
}

到此這篇關(guān)于Go基本數(shù)據(jù)類型的具體使用的文章就介紹到這了,更多相關(guān)Go 數(shù)據(jù)類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • golang如何用http.NewRequest創(chuàng)建get和post請求

    golang如何用http.NewRequest創(chuàng)建get和post請求

    這篇文章主要介紹了golang如何用http.NewRequest創(chuàng)建get和post請求問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • go語言題解LeetCode66加一示例詳解

    go語言題解LeetCode66加一示例詳解

    這篇文章主要為大家介紹了go語言題解LeetCode66加一示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Go語言實(shí)現(xiàn)釘釘發(fā)送通知

    Go語言實(shí)現(xiàn)釘釘發(fā)送通知

    本文通過代碼給大家介紹了Go語言實(shí)現(xiàn)釘釘發(fā)送通知,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • 如何避免Go語言常見錯誤之意外的變量隱藏

    如何避免Go語言常見錯誤之意外的變量隱藏

    在Go語言中,變量隱藏(Variable Shadowing)是一個常見的錯誤來源,變量隱藏發(fā)生在一個內(nèi)部作用域中聲明的變量與外部作用域的變量同名時,這可能導(dǎo)致開發(fā)者無意中使用了錯誤的變量,造成難以追蹤的bug,本文講解一些關(guān)于變量隱藏的常見錯誤和如何避免它們的方法
    2024-01-01
  • 淺談Golang空白導(dǎo)入的真正用途

    淺談Golang空白導(dǎo)入的真正用途

    在Go語言中,空白導(dǎo)入的核心用途是為了執(zhí)行被導(dǎo)入包的 init 函數(shù),從而觸發(fā)其初始化副作用,而無需在代碼中直接使用該包的導(dǎo)出標(biāo)識符,下面就來詳細(xì)的介紹一下Golang空白導(dǎo)入的真正用途,感興趣的可以了解一下
    2026-04-04
  • go語言實(shí)現(xiàn)順序存儲的棧

    go語言實(shí)現(xiàn)順序存儲的棧

    這篇文章主要介紹了go語言實(shí)現(xiàn)順序存儲的棧,實(shí)例分析了Go語言實(shí)現(xiàn)順序存儲的棧的原理與各種常見的操作技巧,需要的朋友可以參考下
    2015-03-03
  • 一文理解Goland協(xié)程調(diào)度器scheduler的實(shí)現(xiàn)

    一文理解Goland協(xié)程調(diào)度器scheduler的實(shí)現(xiàn)

    本文主要介紹了Goland協(xié)程調(diào)度器scheduler的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Go語言學(xué)習(xí)之函數(shù)的定義與使用詳解

    Go語言學(xué)習(xí)之函數(shù)的定義與使用詳解

    這篇文章主要為大家詳細(xì)介紹Go語言中函數(shù)的定義與使用,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Go語言有一定幫助,需要的可以參考一下
    2022-04-04
  • 深入探究Go語言中for?range語句

    深入探究Go語言中for?range語句

    為了更加便捷地遍歷這些數(shù)據(jù)類型,Go語言引入了for...range語句,本文將以數(shù)組遍歷為起點(diǎn),逐步介紹for...range語句在不同數(shù)據(jù)類型中的應(yīng)用,希望對大家有所幫助
    2023-06-06
  • go build和go install的區(qū)別介紹

    go build和go install的區(qū)別介紹

    這篇文章主要介紹了go build和go install的區(qū)別介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12

最新評論

衢州市| 宁陵县| 于都县| 封丘县| 页游| 临泽县| 阿拉尔市| 集安市| 鄂托克前旗| 玉环县| 万盛区| 定安县| 扶沟县| 敦化市| 衡东县| 深水埗区| 永善县| 康定县| 杭锦后旗| 陵水| 黄浦区| 宿迁市| 合水县| 海城市| 道孚县| 天镇县| 辽阳市| 丁青县| 石楼县| 西贡区| 博客| 白城市| 巫山县| 汶上县| 台湾省| 库车县| 长沙县| 双牌县| 崇左市| 会理县| 邻水|