溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言基礎數(shù)據(jù)類型實例代碼分析

發(fā)布時間:2023-02-28 17:00:54 來源:億速云 閱讀:87 作者:iii 欄目:開發(fā)技術

這篇文章主要講解了“Go語言基礎數(shù)據(jù)類型實例代碼分析”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Go語言基礎數(shù)據(jù)類型實例代碼分析”吧!

    布爾型

    布爾型是Go最簡單的數(shù)據(jù)類型,因為布爾型只有兩個值,即truefalse。

    聲明一個布爾數(shù)據(jù)類型使用關鍵字bool,如:

    var t bool = true
    var f bool = false

    當然,也可以讓Go自動推薦是否為布爾型:

    var t = true
    f := false

    比較運算符和邏輯運算符(如&&,||>=等)的運算結果也是布爾型,且其運算結果一般作為iffor語句的判斷條件:

    if 3 > 2{
      fmt.Println("3是大于2嗎?")
    }
    
    for i := 0;i < 10; i++ {
      fmt.Println(i);
    }

    數(shù)字類型

    Go的數(shù)字數(shù)據(jù)類型有整型、浮點型和復數(shù)三種。

    整型

    整型分為有符號與無符號兩種,有符號的整型可以表示正負整數(shù),無符號則只表示正整數(shù),無論是有符號還是符號都支持1到8個字節(jié)幾種不同長度的類型,因此有不同的取值范圍:

    名稱占用字節(jié)取值范圍是否有符號
    int81個-128~127
    int162個-32768~32767
    int324個-2147483648~2147483647
    int648個-9223372036854775808~9223372036854775807
    int4個或8個根據(jù)操作系統(tǒng)是32位還是64位而變化
    uint81個0~255
    uint162個0~65535
    uint324個0~4294967295
    uint648個0~18446744073709551615
    uint4個或8個根據(jù)操作系統(tǒng)是32位還是64位而變化

    一個整數(shù)有十六進制、十進制、八進制三種表示方式,十進制為用0~9表示,八進制以0開頭,用0~7表示,十六進制以0x0X開頭,用0~9A~F(或者a~f)表示。

    你可以用不同的進制來表示同一個整數(shù):

    var n1 int = 57 //十進制
    var n2 int = 071 //八進制
    var n3 int = 0x39 //十六進制

    Go語言提供了byte類型用于表示一個字符,byte占用1個字節(jié),實際上byteuint8類型的別名:

    var b byte = 'c'
    fmt.Println(b) //99

    Go語言的源碼文件都是UTF8編碼,每個UTF8編碼的字符占用1到4個字節(jié),Go提供了rune類型用于支持UTF8字符,實際上runeuint32類型的別名:

    var r rune = '中'
    fmt.Println(r)

    浮點型

    Go語言提供了float32float64兩種符合IEEE754浮點數(shù)國際標準定義的浮點型數(shù)據(jù)。

    float32的取值范圍是1.4e-453.4e38,可以提供大約6個十進制數(shù)的精度;而float64的取值范圍是4.9e-3241.8e308,可以提供約15個十進制數(shù)的精度,通常應該優(yōu)先使用float64類型。

    浮點型數(shù)值有兩種表示方法,一種是直接用小數(shù)點的字面量,另一種是科學計算法:

    var f32 float32 = 1.88
    var f64 float64 = 2e3 //2000

    復數(shù)

    Go語言有兩種精度的復數(shù)類型:complex64complex128,一個復數(shù)由實部和虛部組成,在聲明復數(shù)類型時,既可以直接用字面量構建,也可以使用函數(shù)complex()

    var x complex64 = complex(1,2)
    //相當于
    var x complex64 = 1+2i

    通過函數(shù)real可以獲取復數(shù)的實部,imag函數(shù)可以獲得復數(shù)的虛部:

    fmt.Println(real(x))
    fmt.Println(imag(x))

    復數(shù)可以用==!=進行比較,只有實部和虛部相等的情況下兩個復數(shù)才相等:

    var y = 1+2i
    if x == y {
      fmt.Println("x和y是相等的")
    }

    math/cmplx包提供了復數(shù)處理的許多函數(shù),比如計算復數(shù)的平方根:

    fmt.Println(cmplx.Sqrt(-1)) // "(0+1i)"

    字符串

    字符串是一個不可以改變字符序列,可以把字符串看作為一個字符數(shù)組,只不過這個數(shù)組不能單獨修改其中某個元素。

    聲明字符串的關鍵字是string

    var s string = "test"
    s[0] = 'c' //不能通過編譯

    也可以在聲明不使用string關鍵字,而由Go語言推斷是否為字符串:

    s := "test"

    一個字符串值有兩種表示方式,一種是用"..."雙引號表示,一種是用反引號來表示:

    var s1 = "test"
    var s2 = `test`

    用雙引號表示的字符串,可以包含反斜杠``開頭的轉(zhuǎn)義字符,常見的轉(zhuǎn)義字符有:

    • \a      響鈴

    • \b      退格

    • \f      換頁

    • \n      換行

    • \r      回車

    • \t      制表符

    • \v      垂直制表符

    • '      單引號(只用在 ''' 形式的rune符號面值中)

    • "      雙引號(只用在 "..." 形式的字符串面值中)

    • \      反斜杠

    使用反引號表示的字符串,轉(zhuǎn)義字符不會起作用,只會原樣輸出:

    var s1 = "test\n"//會換行
    var s2 = `test\n`//不會換行,\n會原樣輸出

    使用len()函數(shù)可以獲取字符串的字節(jié)長度:

    fmt.Println(len(s)) //4個字節(jié)

    也可以截取字符串來生成新的字符串:

    var s1 = s[0:1]
    var s2 = s[:]

    可以通過索引訪問字符串中的單個字符:

    fmt.Println(s[0])

    無論是通過索引訪問字符串中單個字符,還是通過索引截取字符串,都不能超過字符串的字節(jié)長度(字符串字節(jié)長度范圍為0 &le; i< len(s)),否則會引發(fā)panic異常:

    var s = "this is string"
    fmt.Println(s[0:100])   //panic: slice bounds out of range
    fmt.Println(s[len(s)]) // panic: index out of range

    字符串也可以通過比較運算符(如==或者<)進行比較,Go語言會逐個字節(jié)比較字符串:

    s1 := "test1"
    s2 := "test2"
    if s1 < s2 {
      fmt.Println("s1比s2小")
    }

    字符串可以用+號進行拼接:

    var s1 = "hello"
    var s2 = "world"
    var s = s1 + s2

    字符串是一個字符序列,可以看作為一個字符數(shù)組,因此字符串可以與字符數(shù)組[]byte相互轉(zhuǎn)換:

    var b = []byte("test")
    var s := string(b)

    標準庫strings包可以用于字符串的查詢、替換、比較、大小寫轉(zhuǎn)換等操作:

    var s = "test"
    fmt.Println(strings.ToUpper(s))//轉(zhuǎn)換成大寫

    字符串與數(shù)字的相互轉(zhuǎn)換則使用strconv包:

    var i = 123
    fmt.Println(strconv.Itoa(i))
    
    var s = "123"
    fmt.Println(strconv.Atoi(s))

    另外,bytest和unicode也是處理字符串時會用到的標準庫。

    感謝各位的閱讀,以上就是“Go語言基礎數(shù)據(jù)類型實例代碼分析”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Go語言基礎數(shù)據(jù)類型實例代碼分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

    AI