package main
import (
"fmt"
"unsafe"
)
func main() {
// go 在不同數(shù)據(jù)類型之間需要顯示轉(zhuǎn)化 不能自動轉(zhuǎn)換
var i int32 = 100
n1 := float32(i)
fmt.Println(n1)
fmt.Printf("n1的類型 %T n1 占用的字節(jié) %d\n", n1, unsafe.Sizeof(n1))
fmt.Printf("i的類型 %T i 占用的字節(jié) %d\n", i, unsafe.Sizeof(i))
// T(v)將值 v 轉(zhuǎn)換成類型 T
// T 就是數(shù)據(jù)類型 int32 float64
// v 就是需要轉(zhuǎn)換的變量
//被轉(zhuǎn)換的是變量存儲的數(shù)據(jù),變量本身并無變化
}
基本數(shù)據(jù)類型轉(zhuǎn)string
package main
import (
"fmt"
"strconv"
)
func main() {
var num1 uint8 = 99
var num2 float32 = 123.456
var b = true
var myChar byte = 'h'
var str string
//第一種轉(zhuǎn)換方式
str = fmt.Sprintf("%d", num1)
fmt.Printf("str type is %T str = %q\n", str, str)
str = fmt.Sprintf("%f", num2)
fmt.Printf("str type is %T str = %q\n", str, str)
str = fmt.Sprintf("%t", b)
fmt.Printf("str type is %T str = %q\n", str, str)
str = fmt.Sprintf("%c", myChar)
fmt.Printf("str type is %T str = %q\n", str, str)
//第二種轉(zhuǎn)換方式 strconv 不推薦 局限性大
var num3 uint8 = 99
//var num4 float32 = 123.456
var b2 = true
str = strconv.FormatUint(uint64(num3),10)
fmt.Printf("str type is %T str = %q\n", str, str)
//str = strconv.FormatFloat(num4,'f',5,32) // cannot use num4 (type float32) as type float64 in argument to strconv.FormatFloat
fmt.Printf("str type is %T str = %q\n", str, str)
str = strconv.FormatBool(b2)
fmt.Printf("str type is %T str = %q\n", str, str)
//other Itoa
var num5 int = 789
str = strconv.Itoa(num5)
fmt.Printf("str type is %T str = %q\n", str, str)
}
string 轉(zhuǎn)基本數(shù)據(jù)類型
package main
import (
"fmt"
"strconv"
)
func main() {
var str = "true"
var b bool
b, _ = strconv.ParseBool(str)
fmt.Printf("b type is %T b = %v\n", b, b)
var str2 = "3699"
var n1 int64
n1, _ = strconv.ParseInt(str2, 10, 64)
fmt.Printf("b type is %T b = %v\n", n1, n1)
var str3 = "113.457"
var f1 float64
f1, _ = strconv.ParseFloat(str3, 64)
fmt.Printf("b type is %T b = %v\n", f1, f1)
}
要確保string類型轉(zhuǎn)換成有效的數(shù)據(jù)浙于,否則轉(zhuǎn)變?yōu)槟J值