Go学习笔记之数据类型转换

Go数据类型转换

整型与浮点型转换

package main

import (
	"fmt"
	"strconv"
)

func main() {
	// 类型转换建议是从低位的类型转换到高位的类型,比如从int转换到float64,从float32转换到float64
	d := 10
	f := 3.14
	fmt.Println(float64(d) + f)

}

其他类转换成字符串

	// 其他类型转换成字符串类型
	var i int = 10       // int类型
	var b bool = true    // bool类型
	var l float64 = 3.14 // float64类型
	var a byte = 'a'     // byte类型

	// 1. 使用Sprintf函数将其他类型转换成字符串类型
	str_i := fmt.Sprintf("%d", i)                      //Sprintf函数将其他类型转换成字符串类型,%d是int类型的格式
	str_b := fmt.Sprintf("%t", b)                      //Sprintf函数将其他类型转换成字符串类型,%t是bool类型的格式
	str_f := fmt.Sprintf("%f", l)                      //Sprintf函数将其他类型转换成字符串类型,%f是float64类型的格式
	str_C := fmt.Sprintf("%c", a)                      //Sprintf函数将其他类型转换成字符串类型,%c是byte类型的格式
	fmt.Println("使用Sprintf函数将其他类型转换成字符串类型")            // 使用Sprintf函数将其他类型转换成字符串类型
	fmt.Printf("str_i类型 %T str_i值 %v\n", str_i, str_i) // string 10
	fmt.Printf("str_b类型 %T str_b值 %v\n", str_b, str_b) // string true
	fmt.Printf("str_f类型 %T str_f值 %v\n", str_f, str_f) // string 3.140000
	fmt.Printf("str_C类型 %T str_C值 %v\n", str_C, str_C) // string a
	fmt.Println("----------------------------------------------------")

	// 2. 使用strconv包中的函数将其他类型转换成字符串类型
	str_i := strconv.Itoa(i)                           // strconv.Itoa函数将int类型转换成字符串类型
	str_b := strconv.FormatBool(b)                     // strconv.FormatBool函数将bool类型转换成字符串类型
	str_f := strconv.FormatFloat(l, 'f', 6, 64)        // strconv.FormatFloat函数将float64类型转换成字符串类型,'f'表示格式为浮点数,6表示小数点后保留6位,64表示float64类型
	str_C := string(a)                                 // string函数将byte类型转换成字符串类型
	fmt.Println("使用strconv包中的函数将其他类型转换成字符串类型")         // 使用strconv包中的函数将其他类型转换成字符串类型
	fmt.Printf("str_i类型 %T str_i值 %v\n", str_i, str_i) // string 10
	fmt.Printf("str_b类型 %T str_b值 %v\n", str_b, str_b) // string true
	fmt.Printf("str_f类型 %T str_f值 %v\n", str_f, str_f) // string 3.140000
	fmt.Printf("str_C类型 %T str_C值 %v\n", str_C, str_C) // string a

字符串转换成其他类

	// 字符串转换成其他类
	// 1. 使用strconv包中的函数将字符串类型转换成其他类型
	str_i := fmt.Sprintf("%d", i)                      //Sprintf函数将其他类型转换成字符串类型,%d是int类型的格式
	str_b := fmt.Sprintf("%t", b)                      //Sprintf函数将其他类型转换成字符串类型,%t是bool类型的格式
	str_f := fmt.Sprintf("%f", l)                      //Sprintf函数将其他类型转换成字符串类型,%f是float64类型的格式
	str_C := fmt.Sprintf("%c", a)                      //Sprintf函数将其他类型转换成字符串类型,%c是byte类型的格式

	var new_i int                            // int类型
	var new_b bool                           // bool类型
	var new_l float64                        // float64类型
	var new_a []byte                         // byte切片类型
	new_i, _ = strconv.Atoi(str_i)           // strconv.Atoi函数将字符串类型转换成int类型,_表示忽略错误
	new_b, _ = strconv.ParseBool(str_b)      // strconv.ParseBool函数将字符串类型转换成bool类型,_表示忽略错误
	new_l, _ = strconv.ParseFloat(str_f, 64) // strconv.ParseFloat函数将字符串类型转换成float64类型,64表示float64类型,_表示忽略错误
	new_a = []byte(str_C)                    // string类型转换成byte类型
	fmt.Println("使用strconv包中的函数将字符串类型转换成其他类型")
	fmt.Printf("new_i类型 %T new_i值 %v\n", new_i, new_i) // int 10
	fmt.Printf("new_b类型 %T new_b值 %v\n", new_b, new_b) // bool true
	fmt.Printf("new_l类型 %T new_l值 %v\n", new_l, new_l) // float64 3.140000
	fmt.Printf("new_a类型 %T new_a值 %v\n", new_a, new_a) // []uint8 [97]

数值类型与布尔类型转换

注意:在Go中数值类型无法直接转换成布尔类型,布尔类型也无法直接转换成数值类型。


字符串型与布尔型转换

package main

import (
	"fmt"
	"strconv"
)

func main() {

	b, _ := strconv.ParseBool("true")
	fmt.Printf("Value: %v type:%T\n", b, b) // Value: true type:bool

	c, _ := strconv.ParseBool("xxxxxxx")
	fmt.Printf("Value: %v type:%T\n", c, c) // Value: false type:bool
}

不建议将布尔类型转换成字符串型,因为Go中的布尔判断并不依照字符串是否非空进行判断,转换后可能会出现更多问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值