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

GO語(yǔ)言基本類型分析

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

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

一、整型

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

(1)int :依賴不同平臺(tái)下的實(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 : 依賴不同平臺(tái)下的實(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 : 恰好容納指針值的類型,對(duì)32位平臺(tái)是unit32,對(duì)64位平臺(tái)是unit64

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

二、浮點(diǎn)類型

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

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

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

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

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

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

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

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

三、字符串

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

(1)創(chuàng)建:一種是用雙引號(hào)(")括起來(lái),它表示可解析的字符串,可以進(jìn)行字符轉(zhuǎn)義。另一種是用單引號(hào)(')括起來(lái),它表示原生的字符串,可以包含除反引號(hào)之外的任何字符,當(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語(yǔ)言的字符串支持 “+=”操作,可以通過(guò)[n]獲取索引處的原始字節(jié)、通過(guò)[n:m]、[n:]、[:m]來(lái)獲取字節(jié)對(duì)應(yīng)的字符串,若字符被截段,顯示亂碼。如:

復(fù)制代碼 代碼如下:
func test1() {
    str1 := "Go語(yǔ)言的字符串是用UTF-8編碼的變寬字符序列,每個(gè)字符都用一個(gè)或多個(gè)字節(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語(yǔ)
109
41

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

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

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

這個(gè)操作會(huì)將str1的每個(gè)字符數(shù)字直接打印出來(lái)

四、指針

(1)指針的本質(zhì),用一個(gè)簡(jiǎn)單例子說(shuō)明一下:

復(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

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

(2)有兩種創(chuàng)建變量的語(yǔ)法,同時(shí)獲得指向它們的指針: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語(yǔ)言打印指向結(jié)構(gòu)體的指針時(shí),會(huì)打印解引用后的結(jié)構(gòu)體內(nèi)容,同時(shí)會(huì)將&作為前綴,表示它是一個(gè)指針。

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

相關(guān)文章

  • Go語(yǔ)言中JSON文件的讀寫(xiě)操作

    Go語(yǔ)言中JSON文件的讀寫(xiě)操作

    本文主要介紹了Go語(yǔ)言JSON文件的讀寫(xiě)操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • CentOS7使用yum安裝Golang的超詳細(xì)步驟

    CentOS7使用yum安裝Golang的超詳細(xì)步驟

    CentOS默認(rèn)并沒(méi)有安裝golang運(yùn)行環(huán)境,下面這篇文章主要給大家介紹了關(guān)于CentOS7使用yum安裝Golang的超詳細(xì)步驟,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)之strconv的使用

    Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)之strconv的使用

    本文主要介紹了Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)之strconv的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • go設(shè)置多個(gè)GOPATH的方式

    go設(shè)置多個(gè)GOPATH的方式

    這篇文章主要介紹了go設(shè)置多個(gè)GOPATH的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-05-05
  • Go中的動(dòng)態(tài)速率限制有效控制流量

    Go中的動(dòng)態(tài)速率限制有效控制流量

    這篇文章主要為大家介紹了Go中的動(dòng)態(tài)速率限制有效控制流量,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 使用gopkg.in/yaml.v3?解析YAML數(shù)據(jù)詳解

    使用gopkg.in/yaml.v3?解析YAML數(shù)據(jù)詳解

    這篇文章主要為大家介紹了使用gopkg.in/yaml.v3?解析YAML數(shù)據(jù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Go語(yǔ)言bufio庫(kù)的全面指南與實(shí)戰(zhàn)技巧詳解

    Go語(yǔ)言bufio庫(kù)的全面指南與實(shí)戰(zhàn)技巧詳解

    這篇文章主要為大家全面介紹一下?bufio?庫(kù)的核心組件與功能,包括?Reader、Writer?和?Scanner?等并深入探討它們?cè)趯?shí)際編程中的運(yùn)用場(chǎng)景和技巧,感興趣的可以了解下
    2024-01-01
  • Go?語(yǔ)言前綴樹(shù)實(shí)現(xiàn)敏感詞檢測(cè)

    Go?語(yǔ)言前綴樹(shù)實(shí)現(xiàn)敏感詞檢測(cè)

    這篇文章主要為大家介紹了Go語(yǔ)言前綴樹(shù)實(shí)現(xiàn)敏感詞檢測(cè)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 詳解Go?flag實(shí)現(xiàn)二級(jí)子命令的方法

    詳解Go?flag實(shí)現(xiàn)二級(jí)子命令的方法

    這篇文章主要介紹了Go?flag?詳解,實(shí)現(xiàn)二級(jí)子命令,本文就探討一下?Go?語(yǔ)言中如何寫(xiě)一個(gè)擁有類似特性的命令行程序,需要的朋友可以參考下
    2022-07-07
  • Go語(yǔ)言基礎(chǔ)之網(wǎng)絡(luò)編程全面教程示例

    Go語(yǔ)言基礎(chǔ)之網(wǎng)絡(luò)編程全面教程示例

    這篇文章主要為大家介紹了Go語(yǔ)言基礎(chǔ)之網(wǎng)絡(luò)編程全面教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12

最新評(píng)論