Python 提供了一种名为 string.format 的便捷方法,用于使用自定义占位符格式化字符串。 Go 开发人员质疑他们的语言中是否有等效功能。
Go 中最简单的替代方案是 fmt.Sprintf 函数,它允许在格式字符串中进行参数替换。但是,它不支持交换参数的顺序。
Go 还包含文本/模板包,它提供了更通用的方法。
通过利用 strings.Replacer 类型,开发人员可以轻松创建自己的格式函数:
package main import ( "fmt" "strings" ) func main() { file, err := "/data/test.txt", "file not found" log("File {file} had error {error}", "{file}", file, "{error}", err) } func log(format string, args ...string) { r := strings.NewReplacer(args...) fmt.Println(r.Replace(format)) }
文本/模板包可以通过稍微更详细的方法进行更多自定义:
package main import ( "fmt" "os" "text/template" ) func main() { file, err := "/data/test.txt", 666 log4("File {{.file}} has error {{.error}}", map[string]interface{}{"file": file, "error": err}) } func log4(format string, p map[string]interface{}) { t := template.Must(template.New("").Parse(format)) t.Execute(os.Stdout, p) }
Go 允许在格式字符串中使用显式参数索引,这使得可以替换相同的参数
虽然实现细节上存在差异,但 Go 提供了 Python string.format 的替代解决方案,在字符串格式化场景中提供了灵活性和效率。
以上是Go 中是否有相当于 Python 的'string.format()”?的详细内容。更多信息请关注PHP中文网其他相关文章!