>백엔드 개발 >Golang >Python의 `string.format()`과 동일한 Go가 있습니까?

Python의 `string.format()`과 동일한 Go가 있습니까?

DDD
DDD원래의
2024-12-16 18:42:10452검색

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

Go에서 Python의 string.format과 동일

Python은 사용자 정의 자리 표시자로 문자열 형식을 지정하기 위해 string.format이라는 편리한 방법을 제공합니다. Go 개발자는 자신의 언어에 동등한 기능이 있는지 의문을 제기했습니다.

기존 옵션

Go에서 가장 간단한 대안은 형식 문자열에서 매개변수 대체를 허용하는 fmt.Sprintf 함수입니다. 그러나 매개변수 순서 교환은 지원하지 않습니다.

Go에는 더욱 다양한 접근 방식을 제공하는 텍스트/템플릿 패키지도 포함되어 있습니다.

대체 솔루션

사용 strings.Replacer

strings.Replacer 유형을 활용하여 개발자는 자신만의 서식을 쉽게 만들 수 있습니다. 함수:

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

텍스트/템플릿 사용

텍스트/템플릿 패키지를 사용하면 좀 더 장황한 접근 방식으로 더 많은 사용자 정의가 가능합니다.

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

명시적 인수 인덱스 사용

Go에서는 형식 문자열에 명시적인 인수 인덱스를 사용할 수 있습니다. 여러 번 대체됩니다.

구현 세부 사항에는 차이가 있지만 Go는 Python의 string.format에 대한 대체 솔루션을 제공하여 문자열 형식 지정 시나리오에서 유연성과 효율성을 모두 제공합니다.

위 내용은 Python의 `string.format()`과 동일한 Go가 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.