gpt4 book ai didi

python - Golang 相当于使用 F 字符串的 Python 格式化字符串

转载 作者:行者123 更新时间:2023-12-05 05:49:01 26 4
gpt4 key购买 nike

在 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}")

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)

想象一下,如果我需要在同一个字符串中多次重复一个变量,我将不得不不断重复它,然后需要始终监视变量的位置以确保它们正确对齐

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
}

输出:

My name is Ele but I also get called Ben and at times Frank. Generally I prefer Ele and my age is 45.

Go Playground

关于python - Golang 相当于使用 F 字符串的 Python 格式化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70727633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com