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中文網其他相關文章!