golang数据类型转换(strconv包)

1、Go不会对数据进行隐式的类型转换,只能手动去执行转换操作。

例如:

// 浮点数
a := 8.0

// 转换为int类型
b := int(a)

2、Go允许在底层结构相同的两个类型之间互转

// FB类型的底层是int类型
type FB int

// a的类型为FB,底层是int
var a FB = 5

// 将a(FB)转换为int,b现在是int类型
b := int(5)

// 将b(int)转换为FB,c现在是FB类型
c := FB(b)

1、不是所有数据类型都能转换的,例如字母格式的string类型"abcd"转换为int肯定会失败
2、低精度转换为高精度时是安全的,高精度的值转换为低精度时会丢失精度。例如int32转换为int16,float32转换为int
3、这种简单的转换方式不能对int(float)和string进行互转,要跨大类型转换,可以使用strconv包提供的函数

3、strconv包提供了字符串与简单数据类型之间的类型转换功能。可以将简单类型转换为字符串,也可以将字符串转换为其它简单类型。

  • 字符串转intAtoi()
  • int转字符串: Itoa()
  • ParseTP类函数将string转换为TP类型:ParseBool()、ParseFloat()、ParseInt()、ParseUint()。因为string转其它类型可能会失败,所以这些函数都有第二个返回值表示是否转换成功
  • FormatTP类函数将其它类型转string:FormatBool()、FormatFloat()、FormatInt()、FormatUint()
  • AppendTP类函数用于将TP转换成字符串后append到一个slice中:AppendBool()、AppendFloat()、AppendInt()、AppendUint()

更多类型查看:https://golang.org/pkg/strconv/

4、有些类型是不能直接转的,例如:

使用Atoi("a")"a"转换为int类型,自然是不成功的。如果print输出err信息,将显示:

strconv.Atoi: parsing "a": invalid syntax

5、string和int的转换

最常见的是字符串和int之间的转换:

1、int转换为字符串:Itoa()
// Itoa(): int -> string
println("a" + strconv.Itoa(32))  // a32
2、string转换为int:Atoi()
func Atoi(s string) (int, error)

由于string可能无法转换为int,所以这个函数有两个返回值:第一个返回值是转换成int的值,第二个返回值判断是否转换成功。

// Atoi(): string -> int
i,_ := strconv.Atoi("3")
println(3 + i)   // 6

// Atoi()转换失败
i,err := strconv.Atoi("a")
if err != nil {
    println("converted failed")
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值