栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

Golang——数据类型转换(Sprintf、Format、Append方式转换)

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Golang——数据类型转换(Sprintf、Format、Append方式转换)

数据类型转换:
  • 类型转换是将一种数据类型的变量转为另一种类型的变量
  • Go强制要求使用显式类型转换。所以语法更能确定语句及表达式的明确含义
  • 转换的时候如果大的转给小的,会有精度损失(数据溢出)比如int64转int8

转换必须确保类型一致,同样不能将非bool类型结果当做true/false使用

	x := 100
	var b bool = x // 错误:cannot use x (type int) as type bool in assignment
	if x {         // 错误:non-bool x (type int) used as if condition
	}

转换格式:

	// 将v转成T类型,但是v本身的数据类型并不会改变,只是把v变量的值类型转成T
	表达式 T(v) 

演示:

func main() {
	var a int = 1
	// a转va的本身数据类型并不会改变,只是把a变量的值类型的值转成T了
	var b float64 = float64(a)
	var c int = int(b)
	fmt.Printf("%T,%T", b, c)
}

输出:

float64,int

基本类型转string类型: Sprintf方式:

Sprintf():生成一个格式化的字符串

演示:

func main() {
	var num1 int = 9
	var num2 float64 = 9.99
	var b bool = false
	var str string

	str = fmt.Sprintf("%d", num1)
	fmt.Printf("str type %T str=%vn ", str, str)

	str = fmt.Sprintf("%f", num2)
	fmt.Printf("%T str=%vn", str, str)

	str = fmt.Sprintf("%t", b)
	fmt.Printf("%T str=%vn", str, str)

	str = strconv.Itoa(num1)
	fmt.Printf("%T str=%vn", str, str)
}
Format方式:
func main() {

	var num3 int = 24
	var num4 float64 = 1.111
	// 参数1:要转的变量  参数2:进制
	str = strconv.FormatInt(int64(num3), 10)
	
	// 'f':格式  10:保留10位   64:float64
	str = strconv.FormatFloat(num4, 'f', 10, 64)
	fmt.Printf("%T str=%vn", str, str)

	// bool转字符串类型
	str := strconv.FormatBool(false)
	fmt.Printf("%T", str)

	// int类型转字符串
	str2 := strconv.Itoa(24)
	fmt.Printf("n%T", str2)
}
Append:

把整数等转换为字符串后,添加到现有的字节数组中。

演示:

func main() {
	// 整数转字符串,添加到字节数组中
	bytes := make([]byte, 0, 1024)
	bytes = strconv.AppendBool(bytes, true)
	// 第二个参数是要追加的数,指定10进制的方式追加
	bytes = strconv.AppendInt(bytes, 123456, 10)
	bytes = strconv.AppendQuote(bytes, "追加了吗")
	fmt.Println("bytes:", string(bytes)) //字节转字符
}

string类型转基本类型:
  • 在将string类型转换成基本数据类型时,要确保string类型能够转成有有效的数据
  • 例:可以把"123"转成int类型,但是不可以将"aaa"转成int类型,编译器不会报错,go会把它变成默认值0,因为go会判断这个值能不能转成有效的数据,如果不可以会按照该数据的数据类型的默认值赋值。
strconv方式:
func main() {
	var str1 string = "123"
	fmt.Println(i)
	i, _ = strconv.ParseInt(str1, 10, 64)

	// 字符串转为其它类型,只能是false和true
	str3, err := strconv.ParseBool("false")
	if err != nil {
		fmt.Println(err)
	}
	fmt.Printf("n%T", str3)

	//字符串转换为整型
	str4, _ := strconv.Atoi("24")
	fmt.Printf("n%T", str4)

	//字符串转换为浮点数
	str5, _ := strconv.ParseFloat("24.99", 64) //参数2是数据类型大小
	fmt.Printf("n%T", str5)
	fmt.Println(str5)
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/903927.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号