go基础知识(四)格式化输出与类型转换
一:格式化的I/O函数,I/O:Input/Output:中文:输入/输出
1:几种输出方式:
函数 | 备注 |
---|---|
输出到控制台,没有任何格式 | |
Println | 输出到控制台,并且换行 |
Printf | 格式化输出 |
Sprintf | 格式化并返回一个字符串,不输出 |
2:Printf:格式化输出
(1):用法举例:
fmt.Printf("%.3f",str) //Float类型,输出3位小数点 fmt.Printf("%T",str) //输出变量类型 fmt.Printf("%s",str) //正常输出字符串(2):一些常用格式:
%T:打印变量类型 %v:默认方式打印变量值(按原数据类型输出) %d:整形输出 //最大长度为5,这里是123,不够长度,那么左边补空格 //输出:| 123|,123前面是空格 fmt.Printf("%5d",123) %b:打印整形的二进制 %f: Float类型 %5.2f:宽度为5,精度为2。宽度:总长度,精度:小数点 %.2f:取2位小数 %5f:宽度为5 %x:小写十六进制 %X:大写十六进制
3:Sprintf
该函数用法和Printf差不多,不同的是Sprintf不输出,可以赋值给变量,可以转换类型使用。
二:类型转换
1:简单转换 如 int(a),使用有限,比如int(float)和string不能互转,string如果未非纯数字,转int肯定有问题。
2:通过Sprintf转换
3:strconv转换
这个包最常用的大概有这么几类函数:
Atoi():字符串转int
Itoa():int转字符串
Format类函数:把某些类型转换成string。FormatBool()、FormatFloat()、FormatInt()、FormatUint()
Parse类函数:把string转换成其他给定类型。ParseBool()、ParseFloat()、ParseInt()、ParseUint()
/**************************** 1:int转string ****************************/ a := strconv.Itoa(123) // Itoa 转换 a := int(123) //简单转换 a := int64(123) //int64 转string /* Format类函数转换 格式:FormatInt(i int64, base int) 参数 i 为整形;base:进制,范围:2<=base<=36 表示将123转换为10进制, int:本身为64 */ a := strconv.FormatInt(123, 10) /**************************** 2:string转int ****************************/ //Atoi返回值有两个,这里是a,err:值,状态 a, err := strconv.Atoi("123") if err == nil { fmt.Print("转换失败") } //上面写法可用语法糖 a, _ := strconv.Atoi("123") //这样不用处理 err a, _ := strconv.ParseInt("123", 10, 64) //string转10进制 int64 /**************************** 3:float转string ****************************/ /* FormatFloat函数 格式:FormatFloat(f float64, fmt byte, prec, bitSize int) string fmt: b 无小数部分、二进制指数的科学计数法,如-123456p-78 e 科学计数法,如 -1234.456e+78 E 科学计数法,如 -1234.456E+78 f 有小数部分但无指数部分,如123.456 F 等价于 %f g 程序根据实际情况采用 %e 或 %f 格式 G 程序根据实际情况采用 %E 或 %F 格式 prec: 这个由fmt参数控制 对于:e','E' 和 'f',它是小数点后的位数。 对于:'g' 和 'G' 这是总位数 -1:使用必需的最小位数 bitSize:32或者64 */ s32 := strconv.FormatFloat(3.1415926535, 'e', -1, 32) // 32位,3.1415927e+00 s64 := strconv.FormatFloat(3.1415926535, 'f', -1, 64) // 64位,3.1415926535e+00 /**************************** string转float ****************************/ s32 , _ := strconv.ParseFloat("3.1415926535", 32) s64 , _ := strconv.ParseFloat("3.1415926535", 64)