Rumah > pembangunan bahagian belakang > Golang > Go String Formatting: Beyond `fmt.Sprintf()` – Apakah Alternatifnya?

Go String Formatting: Beyond `fmt.Sprintf()` – Apakah Alternatifnya?

Susan Sarandon
Lepaskan: 2024-12-20 02:47:09
asal
611 orang telah melayarinya

Go String Formatting:  Beyond `fmt.Sprintf()` – What are the Alternatives?

Setara dengan Python string.format dalam Go?

Dalam Python, interpolasi rentetan menggunakan kaedah format() menawarkan fleksibiliti dalam menyusun dan menggantikan parameter. Walau bagaimanapun, dalam Go, fungsi fmt.Sprintf() menyediakan pilihan yang lebih terhad, menghalang pengantarabangsaan (I18N). Adakah terdapat alternatif yang lebih sesuai yang membolehkan pesanan parameter bebas?

Strings.Replacer

Menggunakan rentetan.Replacer membolehkan anda mencipta pemformat rentetan tersuai anda dengan berkesan.

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))
}
Salin selepas log masuk

Sampel Output:

File /data/test.txt had error file not found
Salin selepas log masuk

WiText/Template

Pakej teks/templat menawarkan penyelesaian berasaskan templat, walaupun ia boleh menjadi lebih terperinci daripada pendekatan Strings.Replacer.

type P map[string]interface{}

func main() {
    file, err := "/data/test.txt", 666

    log4("File {{.file}} has error {{.error}}", P{"file": file, "error": err})
}

func log4(format string, p P) {
    t := template.Must(template.New("").Parse(format))
    t.Execute(os.Stdout, p)
}
Salin selepas log masuk

Contoh Output:

File /data/test.txt has error 666
Salin selepas log masuk

Hujah Eksplisit Indeks

fmt.Sprintf() menyokong indeks hujah eksplisit, membolehkan anda mengulangi indeks yang sama beberapa kali untuk menggantikan parameter yang sama. Ketahui lebih lanjut tentang teknik ini dalam soalan berkaitan "Gantikan semua pembolehubah dalam Sprintf dengan pembolehubah yang sama."

Atas ialah kandungan terperinci Go String Formatting: Beyond `fmt.Sprintf()` – Apakah Alternatifnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan