假设我有一个包含2个项目的数组,其类型为string / float.
如何在没有浮动项目的科学记号的情况下将它们打印在一起.
如何在没有浮动项目的科学记号的情况下将它们打印在一起.
例如:
package main import ( "fmt" ) func main() { values := []interface{}{"mydata",1234567890.123} for _,v := range values{ fmt.Printf("%v\n",v) } }
输出将是
mydata
1.234567890123e+09
我想要的是
mydata
1234567890.123
fmt
的软件包文档解释了它:%v动词是默认格式,对于浮动数字意味着/恢复为%g,这是
%e for large exponents,%f otherwise. Precision is discussed below.
如果您总是想要“小数点但没有指数,例如123.456”,请明确使用%f.
但是您只能将其用于浮动数字,因此您必须检查打印值的类型.为此,您可以使用type switch或type assertion.
例:
switch v.(type) { case float64,float32: fmt.Printf("%f\n",v) default: fmt.Printf("%v\n",v) }
输出(在Go Playground上试试):
mydata 1234567890.123000