go中string類型轉換為基本數據類型的方法


代碼
// string類型轉基本數據類型
package main

import (
    "fmt"
    "strconv"
)

func main() {
    str1 := "false"
    var b bool
    // 函數ParseBool會返回兩個值
    // "_"表示會忽略掉第二個返回值
    b, _ = strconv.ParseBool(str1)
    fmt.Printf("str1原值為%q, 轉換為%T類型, 值為%v\n", str1, b, b) // str1原值為"false", 轉換為bool類型, 值為false

    str2 := "-100"
    var n1 int64
    // ParseInt函數中,第二個參數表示進制,第三個參數表示位數
    // 注意該函數的返回值為int64類型
    n1, _ = strconv.ParseInt(str2, 10, 64)
    fmt.Printf("str2原值為%q, 轉換為%T類型, 值為%v\n", str2, n1, n1) // str2原值為"-100", 轉換為int64類型, 值為-100

    str3 := "128"
    var n2 uint8
    // n3的類型是uint64
    n3, _ := strconv.ParseUint(str3, 10, 64)
    n2 = uint8(n3)
    fmt.Printf("str3原值為%q, 轉換為%T類型, 值為%v\n", str3, n2, n2) // str3原值為"128", 轉換為uint8類型, 值為128

    str4 := "-3.141592678"
    var f1 float32
    // f2的類型為float64
    f2, _ := strconv.ParseFloat(str4, 64)
    f1 = float32(f2)
    // 注意轉換之后精度有損失
    fmt.Printf("str4原值為%q, 轉換為%T類型, 值為%v\n", str4, f1, f1) // str4原值為"-3.141592678", 轉換為float32類型, 值為-3.1415927

    // 要確保string類型能夠轉換成有效的數據,否則會被轉換成對應類型的默認值,
    // 比如:字符串"today"被轉換為整數后值為0,轉換成浮點數值為0,轉換成布爾值為false。
    str5 := "today"
    c1, _ := strconv.ParseInt(str5, 10, 64)
    fmt.Printf("str5原值為%q, 轉換為%T類型, 值為%v\n", str5, c1, c1) // str5原值為"today", 轉換為int64類型, 值為0
    c2, _ := strconv.ParseFloat(str5, 64)
    fmt.Printf("str5原值為%q, 轉換為%T類型, 值為%v\n", str5, c2, c2) // str5原值為"today", 轉換為float64類型, 值為0
    c3, _ := strconv.ParseBool(str5)
    fmt.Printf("str5原值為%q, 轉換為%T類型, 值為%v\n", str5, c3, c3) // str5原值為"today", 轉換為bool類型, 值為false

    str6 := "711today"
    c4, _ := strconv.ParseInt(str6, 10, 64)
    fmt.Printf("str6原值為%q, 轉換為%T類型, 值為%v\n", str6, c4, c4) // str6原值為"711today", 轉換為int64類型, 值為0
    c5, _ := strconv.ParseFloat(str6, 64)
    fmt.Printf("str6原值為%q, 轉換為%T類型, 值為%v\n", str6, c5, c5) // str6原值為"711today", 轉換為float64類型, 值為0
    c6, _ := strconv.ParseBool(str6)
    fmt.Printf("str6原值為%q, 轉換為%T類型, 值為%v\n", str6, c6, c6) // str6原值為"711today", 轉換為bool類型, 值為false
}
總結

查看源代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM