golang 學習之路 string轉換為其他類型 其他類型轉換為string


將其他值轉換為string  一般常用fmt.Sprintf(格式,轉換的值)


// 使用fmt.Sprintf 轉換所有的類型為string 使用 這是第一種 // 注意在sprintf使用中需要注意轉換的格式 int為%d float為%f bool為%t byte為%c var i int = 20 var f float64 = 12.456 var t bool = true var b byte = 'a' var strs string strs = fmt.Sprintf("%d",i) fmt.Println(strs) fmt.Printf("str type %T ,strs=%v \n",strs,strs) strs = fmt.Sprintf("%f",f) fmt.Println(strs) fmt.Printf("str type %T ,strs=%v \n",strs,strs) strs = fmt.Sprintf("%t",t) fmt.Println(strs) fmt.Printf("str type %T ,strs=%v \n",strs,strs) strs = fmt.Sprintf("%c",b) fmt.Println(strs) fmt.Printf("str type %T ,strs=%v \n",strs,strs)

顯示

20
str type string ,strs=20 
12.456000
str type string ,strs=12.456000 
true
str type string ,strs=true 
a
str type string ,strs=a 

 

 

 

第二種 有局限性  只能單一轉換 看源碼可知

strconv.Itoa() 源碼 只能傳遞int參數

// Itoa is equivalent to FormatInt(int64(i), 10).
func Itoa(i int) string {
    return FormatInt(int64(i), 10)
}
    var xxxx int = 5000
    numss := strconv.Itoa(xxxx)
    fmt.Println(numss)
    fmt.Printf("\n轉換前是 %T, 經過strconv.Itoa轉換為 %T, 值為%v",xxxx,numss,numss)

顯示為

轉換前是 int, 經過strconv.Itoa轉換為 string, 值為5000

 






 

 

至於string 轉其他類型操作如下 前提是string能轉換為其他基本類型  string "123x" 不能轉 為 int 123x   強轉則為0 但是類型會變為int

相當於沒轉成功,相當於給你一個int的默認值和變量名 不管轉換的變量之前有沒有聲明

而其他類型轉string不需要擔心

 

第一種  還是strconv.Atoi()  看源碼也能得知只能傳遞string類型 返回int類型  局限性很大  並且只能將整數字符串轉換 入股摻雜一些字母之類的會錯誤

    var vvvv string = "123"
    // 只能整數的字符串轉換 不能摻雜其他不適整數的字符
    nums,_ := strconv.Atoi(vvvv)
    fmt.Println(nums)
    fmt.Printf("\n轉換前是 %T, 經過strconv.Atoi轉換為 %T, 值為%v",vvvv,nums,nums)

顯示

轉換前是 string, 經過strconv.Atoi轉換為 int, 值為123

第二種 還是strconv 包的函數方法

 

string轉int

// string 類型轉換為 其他類型
    
    var str string = "123"
    

  # strconv.parseint 傳入轉換的字符串 返回int類型和error ing,_ :
= strconv.ParseInt(str,0,0) fmt.Println(ing) fmt.Printf("int type %T %v\n",ing,ing)

# 如果對返回int64位不想要int64的 可以進行一個強制轉換為int32
ing = int32(ing) # 注意只有同類型才能轉換
  同理 下面通過strconv.Parsexxx的也可以通過這個轉換為同類型的其他格式
但是需要考慮 范圍 比如int64轉int32 如果int64返回的值很大,那么強轉會出現值不對

顯示

123
int type int64  123

如果字符串中含有其他 比如字母 則顯示 

var str string = "123z"      // 增加一個z

ing,_ := strconv.ParseInt(str,0,0)
fmt.Println(ing)
fmt.Printf("int type %T  %v\n",ing,ing)

# 顯示
0 int type int64 0

 

字符串轉為bool類型

var str1 string = "true"

b , _ := strconv.ParseBool(str1)        
fmt.Println(b)
fmt.Printf("%t",b)    

顯示 

true
true

但有個局限,只能字符串是"true""是才會轉換為bool = true類型

其他 看我上面的紅字和綠字 因為轉換不成功所以都是一個bool默認值  false 

比如

var str1 string = "truez"
    
b , _ := strconv.ParseBool(str1)        
fmt.Println(b)
fmt.Printf("%t",b)

顯示

false
false

 

string轉float

    var floatstr string = "123.456"

    floats,_ := strconv.ParseFloat(floatstr,64)
    fmt.Println(floats)          //返回float64 可以強轉為float32 但是注意float64位的值大小,如果超過float32位 請不要轉換
    fmt.Printf("str類型為 %T ,值為 %v ,浮點值為 %f" ,floats,floats,floats)

顯示為 

123.456
str類型為 float64 ,值為 123.456 ,浮點值為 123.456000

 

 

 

 

 

學習視頻資料 https://www.bilibili.com/video/av36489007/?p=50


免責聲明!

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



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