如何在Golang中将地图解包为字符串格式的关键字参数?

时间:2018-03-12 23:54:34

标签: string dictionary go format argument-unpacking

在Python中,要使用字典格式化字符串,可以简单地执行:

geopoint = {
  'latitude': 41.123,
  'longitude':71.091
}

print('{latitude} {longitude}'.format(**geopoint))

输出为41.123 71.091。如何在Go中实现相同的关键字解包方法以进行字符串格式化?

编辑:对不起,如果这个问题不清楚,但我想做的是,就像在Python中一样,提供格式字符串中值的键。

3 个答案:

答案 0 :(得分:2)

我建议使用结构来包含您的字段,然后添加方法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)
}

答案 1 :(得分:0)

  

如果我没有弄错你,你可以这样做:

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

答案 2 :(得分:0)

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)
}