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
?這個第三方包。這個包中還提供了其它很多的轉換方法,大家有機會可以更深入地去了解一下。在做類型轉換的時候要注意:浮點型在轉為整型時會失真。
文章來源于網絡,侵刪!