Эквивалент Python string.format в Go?Python

Программы на Python
Anonymous
Эквивалент Python string.format в Go?

Сообщение Anonymous »

В Python это можно сделать:

Код: Выделить всё

"File {file} had error {error}".format(file=myfile, error=err)
или это:

Код: Выделить всё

"File %(file)s had error %(error)s" % {"file": myfile, "error": err}
В Go самый простой вариант:

Код: Выделить всё

fmt.Sprintf("File %s had error %s", myfile, err)
который не позволяет менять порядок параметров в строке формата, что необходимо сделать для I18N. В Go есть пакет шаблона, для которого потребуется что-то вроде:

Код: Выделить всё

package main

import (
"bytes"
"text/template"
"os"
)

func main() {
type Params struct {
File string
Error string
}

var msg bytes.Buffer

params := &Params{
File: "abc",
Error: "def",
}

tmpl, _ := template.New("errmsg").Parse("File {{.File}} has error {{.Error}}")
tmpl.Execute(&msg, params)
msg.WriteTo(os.Stdout)
}
что кажется долгим путем для сообщения об ошибке. Есть ли более разумный вариант, позволяющий мне задавать строковые параметры независимо от порядка?

Подробнее здесь: https://stackoverflow.com/questions/408 ... rmat-in-go

Вернуться в «Python»