道者编程

go基础知识(四)格式化输出与类型转换

一:格式化的I/O函数,I/O:Input/Output:中文:输入/输出

1:几种输出方式:

 函数 备注
 Print 输出到控制台,没有任何格式
 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)
 




最新评论:
我要评论:

看不清楚