浮点数输出中的“%!s”是什么?

我将坐标(位置)作为 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 的电报机器人 api 的 *tgbotapi.Location 对象。该api具有以下结构:


type Location struct {

    Longitude float64 `json:"longitude"`

    Latitude  float64 `json:"latitude"`

}

Location.Latitude 给了我这个:“%!s(float64=42.539679)”(float64)(?)


PIPIONE
浏览 472回答 2
2回答

qq_笑_17

https://golang.org/pkg/fmt/%!s基本上用于错误中,以帮助您识别问题。

千巷猫影

我认为这是使用不正确格式“动词”的问题。您需要使用%f而不是%spackage mainimport (    "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)}可运行:https : //play.golang.org/p/Pec_QrxBIl
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go