2016-05-15 4 views
0

私はGoを使い始めました。この質問は簡単すぎるかもしれません。ごめんなさい。とにかく、 私は2つのfloat64数字の出力として、座標(位置)を取得しています、そして、それは次のようになります。"%!s"とは何ですか?

&{%!s(float64=42.539679) %!s(float64=42.601339)} 

これは私がそのようなものを見ている最初の時間は、だから何が「%です! ""? "TypeOf"は "%!s(float64 = 42.539679)"はfloat64と表示しています。だから私はどのようにこの種のフロートで作業するのですか?それを解析する方法はありますか、何とか%!s(float64 = 42.539679)を42.539679のように見えるようにする方法はありますか?

UPD:強調表示された行は、Syfaroの電文ボットapiの* tgbotapi.Locationオブジェクトです。 APIは、このような構造を持っている: "%sの(のfloat64 = 42.539679)!"(のfloat64)

感謝を:

type Location struct { 
Longitude float64 `json:"longitude"` 
Latitude float64 `json:"latitude"` 

}

とLocation.Latitudeは私にこれを提供します(?)。

+0

それはから来た文字列を調整している場合は?どのように印刷していますか? – ctcherry

+0

@ctcherry私は投稿を更新しました。 – yellalena

+0

それを読んでhttps://golang.org/pkg/fmt/に行き、 "Format errors"を検索するには、 – Snowman

答えて

6

これは、誤った形式の「動詞」を使用する問題だと思います。あなたは%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

関連する問題