我只是试图使用类型开关来处理时间,float32s和float64s。对于time和float64s来说都可以正常工作,但是strconv.FormatFloat(val, 'f', -1, 32)
不断告诉我我不能将type float32
用作type float64
。我不知道这是怎么发生的,所以我必须丢失一些东西或误解我应该如何为FormatFloat()
调用float32s
。
func main() {
fmt.Println(test(rand.Float32()))
fmt.Println(test(rand.Float64()))
}
func test(val interface{}) string {
switch val := val.(type) {
case time.Time:
return fmt.Sprintf("%s", val)
case float64:
return strconv.FormatFloat(val, 'f', -1, 64)
case float32:
return strconv.FormatFloat(val, 'f', -1, 32) //here's the error
default:
return "Type not supported!"
}
}
错误:
最佳答案
FormatFloat
的第一个参数必须是float64,并且您要传递float32。解决此问题的最简单方法是将32位浮点数简单地转换为64位浮点数。
case float32:
return strconv.FormatFloat(float64(val), 'f', -1, 32)
http://play.golang.org/p/jBPaQ-jMBT
关于go - 在类型切换中使用strconv.FormatFloat()遇到问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24748452/