我将坐标(位置)作为2个float64数字的输出,它看起来像这样:
&{%!s(float64=42.539679) %!s(float64=42.601339)}
这是我第一次看到这样的东西,那么“%!s”是什么? “TypeOf”表示“%!s(float64 = 42.539679)”是float64。那么我该如何使用这种花车呢?有没有办法解析它,或以某种方式使%!s(float64 = 42.539679)看起来像42.539679?
UPD:突出显示的行是来自Syfaro电报bot api的* tgbotapi.Location对象。 api有这样的结构:
type Location struct {
Longitude float64 `json:"longitude"`
Latitude float64 `json:"latitude"`
}
并且Location.Latitude给了我:“%!s(float64 = 42.539679)”(float64)(?)
答案 0 :(得分:7)
我认为这是使用错误格式“动词”的问题。您需要使用%f
代替%s
package main
import (
"fmt"
)
func main() {
var f float64 = 3.14
fmt.Printf("attempting to print as string: %s \n", f)
fmt.Printf("attempting to print as float: %f", f)
}
Runnable:https://play.golang.org/p/Pec_QrxBIl
答案 1 :(得分:6)
%!s 基本上用于错误,以帮助您识别问题。