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)
 