Rumah >pembangunan bahagian belakang >Golang >Adakah Terdapat Go yang Setara dengan `string.format()` Python?

Adakah Terdapat Go yang Setara dengan `string.format()` Python?

DDD
DDDasal
2024-12-16 18:42:10449semak imbas

Is There a Go Equivalent to Python's `string.format()`?

Setara dengan string.format Python dalam Go

Python menyediakan kaedah mudah dipanggil string.format untuk memformat rentetan dengan ruang letak tersuai. Pembangun Go telah mempersoalkan sama ada terdapat ciri yang setara dalam bahasa mereka.

Pilihan Sedia Ada

Alternatif paling mudah dalam Go ialah fungsi fmt.Sprintf, yang membenarkan penggantian parameter dalam rentetan format. Walau bagaimanapun, ia tidak menyokong pertukaran tertib parameter.

Go juga termasuk pakej teks/templat, yang menawarkan pendekatan yang lebih serba boleh.

Penyelesaian Alternatif

Menggunakan rentetan.Pengganti

Dengan menggunakan rentetan.Jenis Pengganti, pembangun boleh membuat pemformatan mereka sendiri dengan mudah fungsi:

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

Menggunakan teks/templat

Pakej teks/templat mendayakan lebih banyak penyesuaian dengan pendekatan yang lebih bertele-tele sedikit:

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

Menggunakan Indeks Argumen Eksplisit

Go membenarkan penggunaan indeks hujah eksplisit dalam rentetan format, yang membolehkan parameter yang sama digantikan berbilang kali.

Walaupun terdapat perbezaan dalam butiran pelaksanaan, Go menyediakan penyelesaian alternatif kepada string.format Python, menawarkan kedua-dua fleksibiliti dan kecekapan dalam senario pemformatan rentetan.

Atas ialah kandungan terperinci Adakah Terdapat Go yang Setara dengan `string.format()` Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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