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

GO語言基本類型分析

 更新時間:2014年12月10日 10:46:37   投稿:shichen2014  
這篇文章主要介紹了GO語言基本類型,較為詳細(xì)的分析了整形、浮點(diǎn)型、字符串、指針等類型的具體用法,是深入學(xué)習(xí)GO語言所必須掌握的重要基礎(chǔ),需要的朋友可以參考下

本文實(shí)例分析了GO語言基本類型。分享給大家供大家參考。具體如下:

一、整型

go語言有13種整形,其中有2種只是名字不同,實(shí)質(zhì)是一樣的,所以,實(shí)質(zhì)上go語言有11種整形。如下:

(1)int :依賴不同平臺下的實(shí)現(xiàn),可以是int32或int64

(2)int8 :  (-128->127)

(3)int16: (-32768->32767)

(4)int32: (-2 147 483 648->2 147 483 647)

(5)int64 :(-9 223 372 036 854 775 808->9 223 372 036 854 775 807)

(6)unit : 依賴不同平臺下的實(shí)現(xiàn),可以是int32或int64

(7)unit8 (又名byte):  (0->255)

(8)unit16 :   (0->65535)

(9)unit32 (又名rune):    (0->4 294 967 295)

(10)unit64 : (0->18 446 744 073 709 551 615)

(11)unitptr : 恰好容納指針值的類型,對32位平臺是unit32,對64位平臺是unit64

(PS : 值得注意的是,go語言中沒有自動類型轉(zhuǎn)換,這意味著,除了上篇博文分析的比較運(yùn)算符之外,其他的操作符基本需要類型轉(zhuǎn)換,才能進(jìn)行操作。否則就是編譯錯誤)

二、浮點(diǎn)類型

go語言有2種類型的浮點(diǎn)和兩種類型的復(fù)數(shù)類型。

(1) float32(-3.402...×1038->3.402...×1038)

(2) float64(-1.797...×10308->+1.797...×10308)

(3) complex64( 實(shí)部、虛部都是一個float32 )

(4) complex128  ( 實(shí)部、虛部都是一個float64 )

(PS:標(biāo)準(zhǔn)庫math包中,包含了眾多數(shù)學(xué)函數(shù),其中所有函數(shù)均使用float64,

標(biāo)準(zhǔn)庫math/cmplx包含眾多復(fù)數(shù)相關(guān)的數(shù)學(xué)函數(shù),其中所有函數(shù)均使用complex128)

(PPS : 跟數(shù)學(xué)中一樣,Go語言使用后綴 i 表示復(fù)數(shù),例如 5 + 5.1i )

三、字符串

Go語言的字符串是用UTF-8編碼的變寬字符序列,每個字符都用一個或多個字節(jié)表示。這與Java不同,Java是采用UTF-16來表示,每個字符都對應(yīng)2個字節(jié)。

(1)創(chuàng)建:一種是用雙引號(")括起來,它表示可解析的字符串,可以進(jìn)行字符轉(zhuǎn)義。另一種是用單引號(')括起來,它表示原生的字符串,可以包含除反引號之外的任何字符,當(dāng)然也可以換行。如下: 

復(fù)制代碼 代碼如下:
func test1() {
    str1 := "\"it's me!\""
    str2 := `"it's me,too"`
    fmt.Println(str1)
    fmt.Println(str2)
}

輸出為:

"it's me!"
"it's me,too"
(2)Go語言的字符串支持 “+=”操作,可以通過[n]獲取索引處的原始字節(jié)、通過[n:m]、[n:]、[:m]來獲取字節(jié)對應(yīng)的字符串,若字符被截段,顯示亂碼。如:

復(fù)制代碼 代碼如下:
func test1() {
    str1 := "Go語言的字符串是用UTF-8編碼的變寬字符序列,每個字符都用一個或多個字節(jié)表示。"
    fmt.Println(str1[4:15])
    fmt.Println(str1[5:15])
    fmt.Println(str1[5])
    fmt.Println(str1[:5])
    fmt.Println(len(str1))         //字節(jié)數(shù)
    fmt.Println(len([]rune(str1))) //字符數(shù)
}

輸出為 :

�言的字�
言的字�
232
Go語
109
41

(3)字符串支持常規(guī)的比較運(yùn)算符操作,比較運(yùn)算符在內(nèi)存中一個字節(jié)一個字節(jié)的比較字符串。當(dāng)然了,這個比較是按照utf-8編碼的順序進(jìn)行比較的。

(4)上例的最后一個取字符數(shù)的操作:len([]rune(str1)),在Go語言中,一個字符串可以可以用一個rune(又名int32)數(shù)組來表示,每個rune都表示一個單一的字符。如:

復(fù)制代碼 代碼如下:
func test1() {
    str1 := "Go語言的字符串是用UTF-8編碼的變寬字符序列,每個字符都用一個或多個字節(jié)表示。"
    for _, char := range []rune(str1) {
        fmt.Println(char)
    }
}

這個操作會將str1的每個字符數(shù)字直接打印出來

四、指針

(1)指針的本質(zhì),用一個簡單例子說明一下:

復(fù)制代碼 代碼如下:
func test2() {
    a := "xyz"
    b := "opq"
    pa := &a  //pa為指向a的指針
    pp := &pa //pp為指向pa的指針
    fmt.Println(a, b, *pa, **pp)
    a += "zz" //a追加“zz”
    fmt.Println(a, b, *pa, **pp)
    *pa += "bb" //pp指向的值,追加"bb"
    fmt.Println(a, b, *pa, **pp)
    fmt.Println("打印a各種情況:", &a, a)
    fmt.Println("打印pa各種情況:", &pa, pa, *pa)
    fmt.Println("打印pp各種情況:", &pp, pp, *pp, **pp)
}

輸出如下:

xyz opq xyz xyz
xyzzz opq xyzzz xyzzz
xyzzzbb opq xyzzzbb xyzzzbb
打印a各種情況: 0xc0820001d0 xyzzzbb
打印pa各種情況: 0xc082038018 0xc0820001d0 xyzzzbb
打印pp各種情況: 0xc082038020 0xc082038018 0xc0820001d0 xyzzzbb

可見,指針的本質(zhì)就是一個存放邏輯地址的變量。

(2)有兩種創(chuàng)建變量的語法,同時獲得指向它們的指針:new(Type) 和 &Type{}, 如下:

復(fù)制代碼 代碼如下:
type point struct {
    x int
    y int
}

func test3() {
    a := point{1, 2}
    b := new(point)
    c := &point{}
    d := &point{3, 4}
    fmt.Println(a, b, c, d)
}

輸出為:

{1 2} &{0 0} &{0 0} &{3 4}

Go語言打印指向結(jié)構(gòu)體的指針時,會打印解引用后的結(jié)構(gòu)體內(nèi)容,同時會將&作為前綴,表示它是一個指針。

希望本文所述對大家的GO語言程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Go語言為什么不支持前綴自增運(yùn)算符原理解析

    Go語言為什么不支持前綴自增運(yùn)算符原理解析

    這篇文章主要為大家介紹了Go語言為什么不支持前綴自增運(yùn)算符原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 教你一招完美解決vscode安裝go插件失敗問題

    教你一招完美解決vscode安裝go插件失敗問題

    VSCode是我們開發(fā)go程序的常用工具,但是安裝VSCode成功后,創(chuàng)建一個.go文件居然提示錯誤了,所以下面下面這篇文章主要給大家介紹了如何通過一招完美解決vscode安裝go插件失敗問題的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Go語言sync.Cond基本使用及原理示例詳解

    Go語言sync.Cond基本使用及原理示例詳解

    這篇文章主要為大家介紹了Go語言sync.Cond基本使用及原理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Golang環(huán)境變量設(shè)置和查看工具go env詳解

    Golang環(huán)境變量設(shè)置和查看工具go env詳解

    go env 是 Go 工具鏈中的一個命令,用于設(shè)置和查看當(dāng)前 Golang 環(huán)境的相關(guān)信息,對于理解、編譯和運(yùn)行 Golang 程序非常有用,本文就給大家簡單的介紹一下Golang環(huán)境變量設(shè)置和查看工具go env,需要的朋友可以參考下
    2023-07-07
  • Go?連接?MySQL之?MySQL?預(yù)處理詳解

    Go?連接?MySQL之?MySQL?預(yù)處理詳解

    Go語言提供了豐富的庫和工具,可以方便地連接MySQL數(shù)據(jù)庫。MySQL預(yù)處理是一種提高數(shù)據(jù)庫操作效率和安全性的技術(shù)。Go語言中的第三方庫提供了MySQL預(yù)處理的支持,通過使用預(yù)處理語句,可以避免SQL注入攻擊,并且可以提高數(shù)據(jù)庫操作的效率。
    2023-06-06
  • go語言題解LeetCode228匯總區(qū)間示例詳解

    go語言題解LeetCode228匯總區(qū)間示例詳解

    這篇文章主要為大家介紹了go語言題解LeetCode228匯總區(qū)間示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Go語言中的range用法實(shí)例分析

    Go語言中的range用法實(shí)例分析

    這篇文章主要介紹了Go語言中的range用法,實(shí)例分析了range的功能與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • GoLang?socket網(wǎng)絡(luò)編程傳輸數(shù)據(jù)包時進(jìn)行長度校驗(yàn)的方法

    GoLang?socket網(wǎng)絡(luò)編程傳輸數(shù)據(jù)包時進(jìn)行長度校驗(yàn)的方法

    在GoLang?socket網(wǎng)絡(luò)編程中,為了確保數(shù)據(jù)交互的穩(wěn)定性和安全性,通常會通過傳輸數(shù)據(jù)的長度進(jìn)行校驗(yàn),發(fā)送端首先發(fā)送數(shù)據(jù)長度,然后發(fā)送數(shù)據(jù)本體,接收端則根據(jù)接收到的數(shù)據(jù)長度和數(shù)據(jù)本體進(jìn)行比較,以此來確認(rèn)數(shù)據(jù)是否傳輸成功
    2024-11-11
  • 通過源碼分析Golang?cron的實(shí)現(xiàn)原理

    通過源碼分析Golang?cron的實(shí)現(xiàn)原理

    golang實(shí)現(xiàn)定時任務(wù)很簡單,只須要簡單幾步代碼即可以完成,最近在做了幾個定時任務(wù),想研究一下它內(nèi)部是怎么實(shí)現(xiàn)的,所以將源碼過了一遍,記錄和分享在此。需要的朋友可以參考以下內(nèi)容,希望對大家有幫助
    2022-10-10
  • Go語言中的速率限流策略全面詳解

    Go語言中的速率限流策略全面詳解

    這篇文章主要為大家介紹了Go語言中的速率限流策略全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11

最新評論

饶河县| 黄冈市| 弥渡县| 安乡县| 蒙自县| 大渡口区| 佛学| 若羌县| 临漳县| 大化| 贡觉县| 蓬溪县| 揭东县| 湘潭县| 崇阳县| 鹤岗市| 浪卡子县| 花莲县| 锦屏县| 揭东县| 阳信县| 包头市| 略阳县| 白山市| 永川市| 彭水| 兰溪市| 天柱县| 卢湾区| 蓬溪县| 印江| 霞浦县| 清远市| 英吉沙县| 安阳县| 体育| 诸暨市| 临清市| 三亚市| 盐津县| 贵南县|