golang 類型轉換只能顯性轉換 不能自動轉換
基本數據類型間的轉換
var x1 int = 2 var x2 int16 var x3 int8 x2 = 200 + x1 x3 = 200 + x1
.\test.go:3:8: imported and not used: "fmt"
.\test.go:21:5: cannot use 200 + x1 (type int) as type int16 in assignment
.\test.go:22:5: cannot use 200 + x1 (type int) as type int8 in assignment
var x1 int = 2
var x2 int16
var x3 int8
x2 = 200 + int16(x1)
x3 = 200 + int8(x1)
.\test.go:22:11: constant 200 overflows int8
基本數據類型和 string 之間的轉換
1. 使用 fmt.sprintf 函數進行
package main
import "fmt"
func main() {
var x1 int = 88
var x2 float32 = 3.45
var x3 string
x3 = fmt.Sprintf("this is a int %d \n", x1) //注意一定要使用雙引號
fmt.Print(x3)
x3 = fmt.Sprintf("this is a float str %f \n", x2)
fmt.Print(x3)
}
2. 使用 strconv 函數
package main
import (
"fmt"
"strconv"
)
func main() {
var xx int = 123
s := strconv.FormatInt(int64(xx), 16)
fmt.Print(s)
}
字符串string 轉換為 基本數據類型
使用strconv 內容
package main
import (
"fmt"
"strconv"
)
func main() {
var xx string = "1232123"
xxx, _ := strconv.ParseInt(xx, 10, 32)
fmt.Printf("this xxx is %T %d", xxx, xxx)
// this xxx is int64 1232123
}
只能返回64位 如果需要32位 要自己在進行一次轉換
注意事項
字符串強行轉換為int 會有以下狀況
package main
import (
"fmt"
"strconv"
)
func main() {
var xx string = "hello"
xxx, _ := strconv.ParseInt(xx, 10, 32)
fmt.Printf("this xxx is %T %d", xxx, xxx)
// this xxx is int64 0
}
