在 python 中,可以使用 f-string 来格式化字符串,如下所示
name1 = 'Ele'
name2 = 'Ben'
name3 = 'Frank'
age = 45
print(f"My name is {name1} but i also get called {name2} and at times {name3}. Generally I prefer {name1} and my age is {age}")
Run Code Online (Sandbox Code Playgroud)
golang 相当于什么?我可以在哪里准确指定哪个变量在哪个位置
目前,这就是我在 golang 中看到的所有内容,但它会不必要地创建重复变量,如下所示
name1 := "Ele"
name2 := "Ben"
name3 := "Frank"
age := 45
message := fmt.Sprintf("My name is %s but i also get called %s and at times %s. Generally I prefer %s and my age is %d", name1, name2, name3, name1, age)
fmt.Println(message)
Run Code Online (Sandbox Code Playgroud)
想象一下,如果我需要在同一个字符串中多次重复一个变量,我将不得不不断重复它,然后需要始终监视变量的位置以确保它们正确对齐
golang有没有类似于python中的f-string的方法?
您可以使用text/template。
对于这个简单的示例来说,这有点大材小用,但在处理复杂的模板、大量输出等时,这是值得的。
package main
import (
"bytes"
"fmt"
"log"
"text/template"
)
func main() {
data := fdata{
"Name1": "Ele",
"Name2": "Ben",
"Name3": "Frank",
"Age": 45,
}
format := "My name is {{.Name1}} but I also get called {{.Name2}} and at times {{.Name3}}. Generally I prefer {{.Name1}} and my age is {{.Age}}."
result, err := fstring(format, data)
if err != nil {
log.Fatalf("fstring() failed: %v", err)
}
fmt.Println(result)
}
type fdata map[string]interface{}
func fstring(format string, data fdata) (string, error) {
t, err := template.New("fstring").Parse(format)
if err != nil {
return "", fmt.Errorf("error creating template: %v", err)
}
output := new(bytes.Buffer)
if err := t.Execute(output, data); err != nil {
return "", fmt.Errorf("error executing template: %v", err)
}
return output.String(), nil
}
Run Code Online (Sandbox Code Playgroud)
输出:
My name is Ele but I also get called Ben and at times Frank. Generally I prefer Ele and my age is 45.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3024 次 |
| 最近记录: |