Golang int/float - string 的转换

如题,整理一下。

1. int – string

func TestStrconvInt(t *testing.T) {
	// int

	// int >> string
	var a1 int
	a1 = 11
	s1 := strconv.Itoa(a1)
	fmt.Printf("s1: %s\n", s1)

	// string >> int
	s2 := "22"
	if a2, err := strconv.Atoi(s2); err == nil {
		fmt.Printf("a2: %d\n", a2)
	} else {
		log.Fatal(err)
	}

	// int64

	// int64 >> string
	var a3 int64
	a3 = 9223372036854775807     // 2^63 - 1
	s3 := strconv.FormatInt(a3, 10)
	fmt.Printf("s3: %s\n", s3)

	// string >> int64
	var a4 int64
	var err4 error
	s4 := "9223372036854775807"     // 2^63 - 1
	if a4, err4 = strconv.ParseInt(s4, 10, 64); err4 == nil {
		fmt.Printf("a4: %d\n", a4)
	} else {
		log.Fatal(err4)
	}

	// int32

	// int32 >> string
	var a5 int32
	a5 = 2147483647      // 2^31 - 1
	s5 := strconv.FormatInt(int64(a5), 10)
	fmt.Printf("s5: %s\n", s5)

	// string >> int32
	var a6 int32
	s6 := "2147483647"      // 2^31 - 1
	if a6_1, err := strconv.ParseInt(s6, 10, 32); err == nil {   // a6_1 为 int64 类型
		a6 = int32(a6_1)
		fmt.Printf("a6: %d\n", a6)
	} else {
		log.Fatal(err)
	}

	var a7 int64
	a7 = 2147483648
	var a8 int32
	a8 = int32(a7)  // 溢出了
	fmt.Printf("a8: %d\n", a8)  // a8: -2147483648

	var a9 interface{}
	a9 = a3  // 赋予 int64 类型的值
	var a10 int64
	a10 = a9.(int64)
	fmt.Printf("a10: %d\n", a10)  // a10: 9223372036854775807

	var a11 interface{}
	a11 = a5    // 赋予 int32 类型的值
	var a12 int64
	//a12 = a11.(int64)  // panic: interface conversion: interface {} is int32, not int64
	a12 = int64(a11.(int32))
	fmt.Printf("a12: %d\n", a12)  // a12: 2147483647
}

2. float – string

func TestStrconvFloat(t *testing.T) {
	// float64

	// float64 >> string
	var a1 float64
	a1 = 3.1415926535
	s1 := strconv.FormatFloat(a1, 'f', -1, 64)
	fmt.Printf("s1: %s\n", s1)  // s1: 3.1415926535

	// float32

	// float32 >> string
	var a3 float32
	a3 = 3.1415926535
	s3 := strconv.FormatFloat(float64(a3), 'f', -1, 32)
	fmt.Printf("s3: %s\n", s3)  // s3: 3.1415927
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值