ホームページ > バックエンド開発 > Golang > Goは文字列のフォーマットをどのように処理しますか? (例えば、fmt.printf、fmt.sprintf)

Goは文字列のフォーマットをどのように処理しますか? (例えば、fmt.printf、fmt.sprintf)

Robert Michael Kim
リリース: 2025-03-25 11:19:44
オリジナル
146 人が閲覧しました

Goは文字列のフォーマットをどのように処理しますか? (例、fmt.printf、fmt.sprintf)

Goのfmtパッケージは、主にfmt.Printffmt.Sprintfなどの関数を介して、強力な文字列フォーマット機能を提供します。これらの関数は、フォーマット仕様を使用して、引数を文字列内でフォーマットする方法を定義します。

  • FMT.PRINTF :この関数は、フォーマットされた文字列を標準出力に書き込みます。コンソール出力には一般的に使用されます。
  • FMT.SPRINTF :この関数は、フォーマットされた文字列を値として返し、即時出力なしで必要に応じて保存または使用できるようにします。

両方の関数は、データのフォーマット方法を定義する文字列内のプレースホルダーであるフォーマット仕様に依存しています。たとえば、 %s文字列に、整数の%d 、およびフローティングポイント数に%f使用されます。

fmt.Printffmt.Sprintfどのように使用されるかの簡単な例を次に示します。

 <code class="go">package main import "fmt" func main() { name := "Alice" age := 30 // Using fmt.Printf to print directly to console fmt.Printf("My name is %s and I am %d years old.\n", name, age) // Using fmt.Sprintf to return a formatted string formattedString := fmt.Sprintf("My name is %s and I am %d years old.", name, age) fmt.Println(formattedString) }</code>
ログイン後にコピー

goのfmt.printfとfmt.sprintfの違いは何ですか?

goのfmt.Printffmt.Sprintfの主な違いは次のとおりです。

  • 出力宛先fmt.Printfフォーマットされた文字列を標準出力(コンソール)に直接書き込みますが、 fmt.Sprintfフォーマットされた文字列を後で保存または使用できるstring値として返します。
  • 使用状況のコンテキストfmt.Printfは通常、コンソールへの即時出力が必要な場合に使用され、デバッグまたはインタラクティブなアプリケーションに適しています。対照的に、 fmt.Sprintf 、フォーマットされた文字列をさらに処理するか、使用前に変数に保存する必要がある場合に役立ちます。
  • 返品値fmt.Printf値を返しません。コンソールへの印刷の副作用のみを実行します。ただし、 fmt.Sprintfフォーマットされた文字列を返します。これは変数に割り当てることができます。

GoのFMTパッケージで使用される一般的な形式の仕様の例を提供できますか?

Goのfmtパッケージは、さまざまなデータ型とフォーマットのニーズを処理するためのさまざまな形式の仕様をサポートしています。いくつかの一般的な形式の指定器は次のとおりです。

  • %S :文字列のフォーマット。

     <code class="go">name := "Bob" fmt.Printf("Hello, %s!\n", name)</code>
    ログイン後にコピー
  • %D :10進整数フォーマット。

     <code class="go">age := 25 fmt.Printf("Age: %d\n", age)</code>
    ログイン後にコピー
  • %F :浮動小数点数のフォーマット。

     <code class="go">price := 12.99 fmt.Printf("Price: %.2f\n", price) // Two decimal places</code>
    ログイン後にコピー
  • %V :値のタイプのデフォルト形式。

     <code class="go">structVal := struct { Name string Age int }{"Charlie", 30} fmt.Printf("Value: %v\n", structVal) // Output: Value: {Charlie 30}</code>
    ログイン後にコピー
  • %t :値のタイプ。

     <code class="go">var num int = 42 fmt.Printf("Type: %T\n", num) // Output: Type: int</code>
    ログイン後にコピー
  • %P :ポインターアドレス。

     <code class="go">ptr := &num fmt.Printf("Pointer: %p\n", ptr)</code>
    ログイン後にコピー

GOのさまざまな宛先にフォーマットされた出力にFMT.FPRINTFを使用するにはどうすればよいですか?

fmt.Fprintffmt.Printfに似ていますが、フォーマットされた出力の宛先を指定することができます。この関数は、 io.Writer最初の引数として取得します。これは、 os.Filebytes.Buffer 、またはstrings.BuilderなどのWrite方法を実装する任意のタイプにすることができます。

さまざまな目的地を持つfmt.Fprintf使用する方法を示す例を次に示します。

 <code class="go">package main import ( "fmt" "os" "bytes" "strings" ) func main() { // Writing to stdout fmt.Fprintf(os.Stdout, "Hello, stdout!\n") // Writing to a file file, err := os.Create("output.txt") if err != nil { panic(err) } defer file.Close() fmt.Fprintf(file, "Hello, file!\n") // Writing to bytes.Buffer var buffer bytes.Buffer fmt.Fprintf(&buffer, "Hello, buffer!") fmt.Println("Buffer content:", buffer.String()) // Writing to strings.Builder var builder strings.Builder fmt.Fprintf(&builder, "Hello, builder!") fmt.Println("Builder content:", builder.String()) }</code>
ログイン後にコピー

この例では、 fmt.Fprintf使用して、フォーマットされた出力を標準の出力、ファイル、 bytes.Buffer 、およびstrings.Builderに書き込むために使用されます。各ケースは、GOのさまざまな宛先にフォーマットされた出力を向上させることで、柔軟で強力なfmt.Fprintfどれほど柔軟で強力なものができるかを示しています。

以上がGoは文字列のフォーマットをどのように処理しますか? (例えば、fmt.printf、fmt.sprintf)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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