Go语言第四章(类型转换)

Go语言第四章(类型转换)
类型转换实际开发里不同类型之间经常需要互相转换字符串转数字、数字转字符串、浮点数转整数、整数转浮点数等等。数字的转换比如有一个浮点数3.1415926535想把它变成整数可以用int()来转换packagemainimportfmtfuncmain(){num:3.1415926535intNum:int(num)fmt.Println(intNum)// 3}可以看到int()会把浮点数转成整数并直接舍去小数部分不是四舍五入。其他数值类型的转换写法也类似记起来很简单——跟定义类型时的名字一模一样int()转为intint8()转为int8int16()转为int16int32()转为int32int64()转为int64uint()转为uintuint8()转为uint8uint16()转为uint16uint32()转为uint32uint64()转为uint64float32()转为float32float64()转为float64数字转字符串数字和字符串之间的转换要用strconvstring convert字符串转换包。比如把整数3转成字符串packagemainimport(fmtstrconv)funcmain(){num:3strNum:strconv.Itoa(num)fmt.Printf(类型: %T,值: %v,strNum,strNum)// 类型: string,值: 3}几点说明导入多个包时用()分组每个包独占一行。strconv.Itoa()就是Int to ASCII把整数转成字符串字符串本质上是字符序列。fmt.Printf()里%T打印类型%v打印值。字符串转数字反过来字符串转数字也很常见。Go 里字符串和数字不能直接运算必须先转成同一类型。比如这样会报错vara10varb20varcab// 错误字符串和数字不能直接运算这时可以用strconv.Atoi()把字符串转成整数packagemainimport(fmtstrconv)funcmain(){str:10num,_:strconv.Atoi(str)fmt.Printf(类型: %T,值: %v,num,num)// 类型: int,值: 10}Atoi是ASCII to Int的缩写。它会返回两个值转换结果和错误。转换失败时第二个返回值不为nil这里用_忽略错误表示暂时不处理失败情况。字符串转布尔值字符串转布尔用strconv.ParseBool()。它同样返回「结果 错误」两个值packagemainimport(fmtstrconv)funcmain(){str:trueb,_:strconv.ParseBool(str)fmt.Printf(类型: %T,值: %v,b,b)// 类型: bool,值: true}ParseBool能识别的真值有1、t、T、TRUE、true、True假值有0、f、F、FALSE、false、False。其他字符串都会转换失败。布尔值转字符串反过来用strconv.FormatBool()把布尔值转成字符串结果只会是true或falsepackagemainimport(fmtstrconv)funcmain(){flag:truestr:strconv.FormatBool(flag)fmt.Printf(类型: %T,值: %v,str,str)// 类型: string,值: true}作业数值转换声明一个float64变量值为9.99用int()转成整数并打印再把结果用float64()转回去观察小数部分是否还在。数字转字符串声明一个int变量表示年龄用strconv.Itoa()转成字符串再用fmt.Printf打印类型和值确认类型是string。字符串转数字声明两个字符串15和27分别用strconv.Atoi()转成整数后相加打印和。布尔转换把字符串1、false、yes分别传给strconv.ParseBool()打印每次转换的结果和错误这次不要用_忽略错误看看哪些能成功。综合练习声明字符串价格199.5和折扣标记true。先把价格用strconv.ParseFloat(str, 64)转成float64折扣标记用ParseBool转成布尔若享受折扣则打八折最后用strconv.FormatFloat把应付金额转成字符串并打印。