使用过go语言的都知道go语言对于类型的控制有多么的严格,因此所有的类型都应该通过显示的转换来完成,下面就给出常见的string和其他常见类型的转换以及interface{}类型转换为其他类型,具体的底层实现可以参考strconv库中的实现。
package main
import (
"fmt"
"strconv"
)
func main() {
//string与int互转
var num1 int = 10;
//Itoa底层调用的是FormatInt
//I to S
str1 := strconv.Itoa(num1)
fmt.Println(str1)
//S to I
num1_int, _ := strconv.Atoi(str1)
fmt.Println(num1_int)
//int64与string类型
var num2 int64 = 432;
//I to S
str2 := strconv.FormatInt(num2, 10)
fmt.Println(str2)
//S to I
num2_int, _ := strconv.ParseInt(str2, 10, 64)
fmt.Println(num2_int)
//float与string互转
//bitSize表示最后一位的位数设置为float32或者float64类型
var f1 float64 = 12.432
//F to S
str3 := strconv.FormatFloat(f1, 'E', -1, 32)
fmt.Println(str3)
//S to F
f_float, _ := strconv.ParseFloat(str3, 32)
fmt.Println(f_float)
// bool与string互转
var bb bool = true
//B to S
str4 := strconv.FormatBool(bb)
fmt.Println(str4)
//S to B
b, _ := strconv.ParseBool(str4)
fmt.Println(b)
//interface转其他类型————返回值是interface,直接赋值是无法转化的
//interface 转string
var a interface{}
var str5 string
a = "3432423"
str5 = a.(string)
fmt.Println(str5)
//interface 转int
var m interface{}
var m1 int
m = 43
m1 = m.(int)
fmt.Println(m1)
//interface 转float64
var ff interface{}
var ff1 float64
ff = 432.54
ff1 = ff.(float64)
fmt.Println(ff1)
}