登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-14 11:09:38 172浏览 收藏

大家好,今天本人给大家带来文章《Golang 相当于使用 F 字符串的 Python 格式化字符串》,文中内容主要涉及到,如果你对Golang方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

问题内容

在 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

理论要掌握,实操不能落!以上关于《Golang 相当于使用 F 字符串的 Python 格式化字符串》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>