ホームページ > バックエンド開発 > Golang > Python の `string.format()` に相当する Go はありますか?

Python の `string.format()` に相当する Go はありますか?

DDD
リリース: 2024-12-16 18:42:10
オリジナル
444 人が閲覧しました

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 型を利用することで、開発者は独自の書式設定を簡単に作成できますfunction:

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))
}
ログイン後にコピー

text/template の使用

text/template パッケージを使用すると、もう少し冗長なアプローチでより多くのカスタマイズが可能になります:

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート