String 如何在Golang中将映射解压为字符串格式的关键字参数?
在Python中,要使用字典格式化字符串,只需执行以下操作:String 如何在Golang中将映射解压为字符串格式的关键字参数?,string,dictionary,go,format,argument-unpacking,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中一样,为格式字符串中的值提供键。我建议使用结构来创建字段,
geopoint = {
'latitude': 41.123,
'longitude':71.091
}
print('{latitude} {longitude}'.format(**geopoint))
输出将为41.123 71.091
。如何在Go中实现相同的关键字解包映射以进行字符串格式设置
编辑:如果问题中不清楚,很抱歉,但我想做的是,像在Python中一样,为格式字符串中的值提供键。我建议使用结构来创建字段,然后添加方法
string
代码:
如果我没有误解你的意思,你也可以这样做:
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
签入游乐场:这是Smoker的想法,但是使用文本/模板的解决方案看起来像这样
很抱歉,如果这个问题不清楚,但是我想做的是,像在Python中一样,为格式字符串中的值提供键。我认为没有标准的方法可以做到这一点。至少就我对地图的了解而言。也许有一个库有一个奇怪的方法可以做到这一点。你可以使用
text/template
@JasonKao;但是正如前面提到的fmt.Sprintf()
(带或不带String()
函数)可能是实现它的“方式”(Go不是Python!)我想你通常会说fmt.Sprintf(“%f%f”、geopoint[“latitude”]、geopoint[“longitude”])
,或者,如果你真的想,写你自己的函数(可能基于regexp.ReplaceAllStringFunc
)。
latitude : 41.123000
longitude : 71.091000
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)
}