1. 程式人生 > >Go string和interface{}與其他型別互轉

Go string和interface{}與其他型別互轉

        使用過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)
}