第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開發(fā)者教程
首頁 慕課教程 Go 入門教程 Go 入門教程 15 Go 的強(qiáng)制類型轉(zhuǎn)換

Go 語言的強(qiáng)制類型轉(zhuǎn)換

Go 語言是一種強(qiáng)類型語言,而且沒有隱式轉(zhuǎn)換。也就是說運(yùn)算符左右的變量類型必須一致,若不一致就會報錯。為了使用戶更加的容易使用,所以 Go 語言提供了各個類型之間強(qiáng)制類型轉(zhuǎn)換的內(nèi)置方法。

1. 整型和浮點型互相轉(zhuǎn)換

整型浮點型變量之間的相互轉(zhuǎn)換相對容易,只需使用強(qiáng)制類型轉(zhuǎn)換標(biāo)志 type(variable)就好了。需要注意的是,當(dāng)高精度低精度類型轉(zhuǎn)換的時候,會失真。即浮點型向整型轉(zhuǎn)換的時候會失去其小數(shù)部分。在實際開發(fā)的過程中,我們一般要避免這兩個類型的互相轉(zhuǎn)換,在無法避免的場景,比如說計算浮點數(shù)和整數(shù)的和之類的情況中。需要秉持不失真原則,將低精度向高精度轉(zhuǎn)換之后進(jìn)行計算。

代碼示例:

package main

import "fmt"

func main(){
    var a int = 10 // 聲明一個整形變量 a 并給 a 賦值為 10
    var b float32 = 3.14 // 聲明一個浮點型變量 b 并給 b 賦值為 3.14
 
    fmt.Printf("整型轉(zhuǎn)換為浮點型:%f\n",float32(a)) // 將變量 a 強(qiáng)制轉(zhuǎn)換為浮點型變量并打印結(jié)果
    fmt.Printf("浮點型轉(zhuǎn)換為整型:%d\n",int(b)) //浮點型轉(zhuǎn)為整型會失真
}

執(zhí)行結(jié)果如下:

圖片描述

整型和浮點型互相轉(zhuǎn)換實例輸出結(jié)果

2. 整形和字符串互相轉(zhuǎn)換

整型和字符串類型的變量互相轉(zhuǎn)換,需要依靠 Go 語言提供的轉(zhuǎn)換包strconv。字符串轉(zhuǎn)整型需要使用這個包的Atoi(string)方法,整型轉(zhuǎn)字符串則是Itoa(int)。這種轉(zhuǎn)換用得最多的就是給一些對象進(jìn)行編號。比如需要給張三編號為NO.1,你可能需要將1轉(zhuǎn)換為字符串之后與NO.進(jìn)行拼接。

代碼示例:

package main

import (
    "fmt"
    "strconv" // 在程序中導(dǎo)入 strconv 轉(zhuǎn)環(huán)包
)

func main() {
    var a int = 10 // 定義一個整形變量并賦值為 10
    var b string = "10" // 定義一個字符串類型變量并賦值為 "10"

    fmt.Printf("整型轉(zhuǎn)換為字符串:%s\n", strconv.Itoa(a))
    tmp, _ := strconv.Atoi(b)
    fmt.Printf("字符串轉(zhuǎn)換為整型:%d\n", tmp)
}

執(zhí)行結(jié)果如下:

圖片描述

整形和字符串互相轉(zhuǎn)換實例輸出結(jié)果

3. 浮點型和字符串互相轉(zhuǎn)換

浮點型和字符串的互相轉(zhuǎn)換沒有直接封裝好的轉(zhuǎn)換接口了,需要調(diào)用strconvs包中稍微底層一點的接口。浮點型轉(zhuǎn)字符串使用FormatFloat(float64,byte,int,int)方法,字符串轉(zhuǎn)換為浮點型則使用ParseFloat(...)方法。因為浮點數(shù)在存儲過程中容易因為精度問題而存在誤差,所以有時候會將浮點數(shù)轉(zhuǎn)換為字符串進(jìn)行存儲。

代碼示例:

package main

import (
    "fmt"
    "strconv"
)

func main() {
    f1 := 0.123456789
    s1 := strconv.FormatFloat(f1, 'f', -1, 32)
    s2 := strconv.FormatFloat(f1, 'f', -1, 64)
    s3 := "0.123456789"
    f2, _ := strconv.ParseFloat(s3, 64)
    f3, _ := strconv.ParseFloat(s3, 32)
    fmt.Println("將浮點數(shù)轉(zhuǎn)換為float32轉(zhuǎn)換為string:", s2)
    fmt.Println("將float64轉(zhuǎn)換為string:", s1)
    fmt.Println("將string轉(zhuǎn)換為float64:", f2)
    fmt.Println("將string轉(zhuǎn)換為float32再強(qiáng)制轉(zhuǎn)換為float64:", f3)
}

執(zhí)行結(jié)果:

圖片描述

浮點型和字符串互相轉(zhuǎn)換實例輸出結(jié)果

4. 小結(jié)

本文主要學(xué)習(xí)了 Go 語言中各個數(shù)據(jù)類型的互相強(qiáng)制轉(zhuǎn)換。主要都是依賴與 strconvs 這個第三方包。這個包中還提供了其它很多的轉(zhuǎn)換方法,大家有機(jī)會可以更深入地去了解一下。在做類型轉(zhuǎn)換的時候要注意:浮點型在轉(zhuǎn)為整型時會失真。