}
在格式化之前,要先转换数据类型,这样就可以避免无限递归:
func (x X) String() string {
return Sprintf("%s", string(x))
}
无限递归也可能发生在自引用数据类型上面,比如一个切片的元素引用了切片自身 。这种情况比较罕见,比如:
a := make([]interface{}, 1)
a[0] = a
fmt.Println(a)
【格式化输入】
// 格式化输入:从输入端读取字符串(以空白分隔的值的序列),
// 并解析为具体的值存入相应的 arg 中,arg 必须是变量地址 。
// 字符串中的连续空白视为单个空白 , 换行符根据不同情况处理 。
// \r\n 被当做 \n 处理 。
// 以动词 v 解析字符串,换行视为空白
Scan(arg列表)
// 以动词 v 解析字符串,换行结束解析
Scanln(arg列表)
// 根据格式字符串中指定的格式解析字符串
// 格式字符串中的换行符必须和输入端的换行符相匹配 。
Scanf(格式字符串, arg列表)
// Scan 类函数会返回已处理的 arg 数量和遇到的错误信息 。
【格式字符串】
格式字符串类似于 Printf 中的格式字符串,但下面的动词和旗标例外:
p:无效
T:无效
e/E/f/F/g/G:功能相同,都是扫描浮点数或复数
s/v:对字符串而言,扫描一个被空白分隔的子串
对于整型 arg 而言,v 动词可以扫描带有前导 0 或 0x 的八进制或十六进制数值 。
宽度被用来指定最大扫描宽度(不会跨越空格),精度不被支持 。
如果 arg 实现了 Scanner 接口,将调用它的 Scan 方法扫描相应数据 。只有基础类型和实现了 Scanner 接口的类型可以使用 Scan 类方法进行扫描 。
【注意】
连续调用 FScan 可能会丢失数据 , 因为 FScan 中使用了 UnreadRune 对读取的数据进行撤销,而参数 io.Reader 只有 Read 方法,不支持撤销 。比如:
Go语言的%d,%p,%v等占位符的使用这些是死知识,把常用的记?。怀S玫闹苯硬楸砭托辛?
golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf 。
type Human struct {
Name string
}
var people = Human{Name:"zhangsan"}
golang没有 '%u' 点位符 , 若整数为无符号类型,默认就会被打印成无符号的 。
宽度与精度的控制格式以Unicode码点为单位 。宽度为该数值占用区域的最小宽度;精度为小数点之后的位数 。
操作数的类型为int时,宽度与精度都可用字符 '*' 表示 。
对于 %g/%G 而言,精度为所有数字的总数,例如:123.45,%.4g 会打印123.5,(而 %6.2f 会打印123.45) 。
%e 和 %f 的默认精度为6
对大多数的数值类型而言,宽度为输出的最小字符数,如果必要的话会为已格式化的形式填充空格 。
而以字符串类型,精度为输出的最大字符数,如果必要的话会直接截断 。
使用起来很简单,一般配合fmt.Printf()使用 , 因为fmt的Printf()是有格式的输出,切忌使用Println(),否则将会以字符串的形式输出 。
查看原文: golang fmt格式“占位符”
go语言保留2位小数的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于golang保留两位小数精度、go语言保留2位小数的信息别忘了在本站进行查找喔 。
推荐阅读
- 魔爆网络游戏,魔爆卡组
- 怎么制作电脑弹窗音乐文件,怎么制作弹出式窗口
- 鸿蒙桌面小照片名字,鸿蒙桌面相册改名
- 流量ip代理平台,流量代理加盟
- php文本数据库备份 php备份数据库代码
- 电信路由器怎么切断网络,电信路由器坏了打维修电话是多少
- js实现字符串分割,js字符串切割split
- c语言的内联函数如何输出 c语言的内联函数如何输出字符串
- redis5.0.5安装,redis 60安装