在 Python 中,要使用字典格式化字符串,可以简单地执行以下操作:
geopoint = {
'latitude': 41.123,
'longitude':71.091
}
print('{latitude} {longitude}'.format(**geopoint))
输出将是41.123 71.091
. 如何在 Go 中为字符串格式实现相同的关键字解包映射?
编辑:抱歉,如果问题不清楚,但我想做的是,就像在 Python 中一样,为格式字符串中的值提供键。
在 Python 中,要使用字典格式化字符串,可以简单地执行以下操作:
geopoint = {
'latitude': 41.123,
'longitude':71.091
}
print('{latitude} {longitude}'.format(**geopoint))
输出将是41.123 71.091
. 如何在 Go 中为字符串格式实现相同的关键字解包映射?
编辑:抱歉,如果问题不清楚,但我想做的是,就像在 Python 中一样,为格式字符串中的值提供键。
Carpetsmoker 的想法,但使用文本/模板的解决方案看起来像这样。
https://play.golang.org/p/s2lPgA-Xa6C
package main
import (
"os"
"text/template"
)
func main() {
geopoint := map[string]float64{
"latitude": 41.123,
"longitude": 71.091,
}
template.Must(template.New("").Parse(`{{ .latitude }} {{ .longitude }}`)).Execute(os.Stdout, geopoint)
}
我建议使用结构来拥有您的字段,然后添加方法String
。
代码: https: //play.golang.org/p/ine_9GwK5o-
package main
import (
"fmt"
)
type Point struct {
latitude float64
longitude float64
}
func (p Point) String() string {
return fmt.Sprintf("%f %f", p.latitude, p.longitude)
}
func main() {
geoP:= Point{latitude:41.123, longitude:71.091}
fmt.Println(geoP)
}
如果我没有误会你,你可以达到同样的效果:
package main
import (
"fmt"
)
var geopoint map[string]float64
func main() {
geopoint = make(map[string]float64)
geopoint["latitude"] = 41.123
geopoint["longitude"] = 71.091
fmt.Println(fmt.Sprintf("latitude : %f\nlongitude : %f", geopoint["latitude"], geopoint["longitude"]))
}
输出:
latitude : 41.123000
longitude : 71.091000
签到操场: https: //play.golang.org/p/g5DXb5iSeBY