Go 語言的強制類型轉換
Go 語言是一種強類型語言,而且沒有隱式轉換。也就是說運算符左右的變量類型必須一致,若不一致就會報錯。為了使用戶更加的容易使用,所以 Go 語言提供了各個類型之間強制類型轉換的內置方法。
1. 整型和浮點型互相轉換
整型和浮點型變量之間的相互轉換相對容易,只需使用強制類型轉換標志?type(variable)就好了。需要注意的是,當高精度向低精度類型轉換的時候,會失真。即浮點型向整型轉換的時候會失去其小數部分。在實際開發的過程中,我們一般要避免這兩個類型的互相轉換,在無法避免的場景,比如說計算浮點數和整數的和之類的情況中。需要秉持不失真原則,將低精度向高精度轉換之后進行計算。
代碼示例:
- 1?
package main - 2
- 3?
import "fmt" - 4
- 5?
func main(){ - 6? ? ? ?
var a int = 10 // 聲明一個整形變量 a 并給 a 賦值為 10 - 7? ? ? ?
var b float32 = 3.14 // 聲明一個浮點型變量 b 并給 b 賦值為 3.14 - 8
- 9? ? ? ?
fmt.Printf("整型轉換為浮點型:%fn",float32(a)) // 將變量 a 強制轉換為浮點型變量并打印結果 - 10? ? ?
fmt.Printf("浮點型轉換為整型:%dn",int(b)) //浮點型轉為整型會失真 - 11
}
執行結果如下:

2. 整形和字符串互相轉換
整型和字符串類型的變量互相轉換,需要依靠 Go 語言提供的轉換包strconv。字符串轉整型需要使用這個包的Atoi(string)方法,整型轉字符串則是Itoa(int)。這種轉換用得最多的就是給一些對象進行編號。比如需要給張三編號為NO.1,你可能需要將1轉換為字符串之后與NO.進行拼接。
代碼示例:
- 1?
package main - 2
- 3?
import ( - 4? ? ? ?
"fmt" - 5? ? ? ?
"strconv" // 在程序中導入 strconv 轉環包 - 6?
) - 7
- 8?
func main() { - 9? ? ? ?
var a int = 10 // 定義一個整形變量并賦值為 10 - 10? ? ?
var b string = "10" // 定義一個字符串類型變量并賦值為 "10" - 11
- 12? ? ?
fmt.Printf("整型轉換為字符串:%sn", strconv.Itoa(a)) - 13? ? ?
tmp, _ := strconv.Atoi(b) - 14? ? ?
fmt.Printf("字符串轉換為整型:%dn", tmp) - 15?
}
執行結果如下:

3. 浮點型和字符串互相轉換
浮點型和字符串的互相轉換沒有直接封裝好的轉換接口了,需要調用strconvs包中稍微底層一點的接口。浮點型轉字符串使用FormatFloat(float64,byte,int,int)方法,字符串轉換為浮點型則使用ParseFloat(...)方法。因為浮點數在存儲過程中容易因為精度問題而存在誤差,所以有時候會將浮點數轉換為字符串進行存儲。
代碼示例:
- 1?
package main - 2?
import ( - 3? ? ? ?
"fmt" - 4? ? ? ?
"strconv" - 5?
) - 6
- 7
- 8?
func main() { - 9? ? ? ? ?
f1 := 0.123456789 - 10? ? ? ?
s1 := strconv.FormatFloat(f1, 'f', -1, 32) - 11? ? ? ?
s2 := strconv.FormatFloat(f1, 'f', -1, 64) - 12? ? ? ?
s3 := "0.123456789" - 13? ? ? ?
f2, _ := strconv.ParseFloat(s3, 64) - 14? ? ? ?
f3, _ := strconv.ParseFloat(s3, 32) - 15? ? ? ?
fmt.Println("將浮點數轉換為float32轉換為string:", s2) - 16? ? ? ?
fmt.Println("將float64轉換為string:", s1) - 17? ? ? ?
fmt.Println("將string轉換為float64:", f2) - 18? ? ? ?
fmt.Println("將string轉換為float32再強制轉換為float64:", f3) - 19?
}
執行結果:

4. 小結
本文主要學習了 Go 語言中各個數據類型的互相強制轉換。主要都是依賴與?strconvs?這個第三方包。這個包中還提供了其它很多的轉換方法,大家有機會可以更深入地去了解一下。在做類型轉換的時候要注意:浮點型在轉為整型時會失真。
文章來源于網絡,侵刪!
