【轉】string類型和其餘類型的值的互轉

因爲在開發過程當中遇到類型轉換問題,好比在web中某個參數是以string存在的,這個時候須要轉換成其餘類型,這裏官方的strconv包裏有這幾種轉換方法。web

實現函數

有兩個函數能夠實現類型的互轉(以int轉string爲例) 
1. FormatInt (int64,base int)string 
2. Itoa(int)string 
打開strconv包能夠發現Itoa的實現方式以下:.net

// Itoa is shorthand for FormatInt(int64(i), 10).
func Itoa(i int) string {
    return FormatInt(int64(i), 10)
}orm

也就是說itoa實際上是更便捷版的FormatInt,以此類推,其餘的實現也相似的。blog

示例開發

int 和string 互轉
//int 轉化爲string
s := strconv.Itoa(i) 
s := strconv.FormatInt(int64(i), 10) //強制轉化爲int64後使用FormatInt字符串

//string 轉爲int
i, err := strconv.Atoi(s) string

int64 和 string 互轉
//int64 轉 string,第二個參數爲基數
s := strconv.FormatInt(i64, 10)
// string 轉換爲 int64 
//第二參數爲基數,後面爲位數,能夠轉換爲int32,int64等
i64, err := strconv.ParseInt(s, 10, 64) it

float 和 string 互轉
// flaot 轉爲string 最後一位是位數設置float32或float64
s1 := strconv.FormatFloat(v, 'E', -1, 32)
//string 轉 float 一樣最後一位設置位數
v, err := strconv.ParseFloat(s, 32)
v, err := strconv.atof32(s)float

bool 和 string 互轉
// ParseBool returns the boolean value represented by the string.
// It accepts 1, t, T, TRUE, true, True, 0, f, F, FALSE, false, False.
// Any other value returns an error.
func ParseBool(str string) (bool, error) {
    switch str {
    case "1", "t", "T", "true", "TRUE", "True":
        return true, nil
    case "0", "f", "F", "false", "FALSE", "False":
        return false, nil
    }
    return false, syntaxError("ParseBool", str)
}

// FormatBool returns "true" or "false" according to the value of b
func FormatBool(b bool) string {
    if b {
        return "true"
    }
    return "false"
}

//上面是官方實現,不難發現字符串t,true,1都是真值。
//對應轉換:
b, err := strconv.ParseBool("true") // string 轉bool
s := strconv.FormatBool(true) // bool 轉string

interface轉其餘類型 
有時候返回值是interface類型的,直接賦值是沒法轉化的。
var a interface{}
var b string
a = "123"
b = a.(string)

經過a.(string) 轉化爲string,經過v.(int)轉化爲類型。 
能夠經過a.(type)來判斷a能夠轉爲何類型。

原文:https://blog.csdn.net/bobodem/article/details/80182096   

相關文章
相關標籤/搜索