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

转载于:https://www.cnblogs.com/zengxm/p/11341954.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值