Goのfmt
パッケージは、主にfmt.Printf
やfmt.Sprintf
などの関数を介して、強力な文字列フォーマット機能を提供します。これらの関数は、フォーマット仕様を使用して、引数を文字列内でフォーマットする方法を定義します。
両方の関数は、データのフォーマット方法を定義する文字列内のプレースホルダーであるフォーマット仕様に依存しています。たとえば、 %s
文字列に、整数の%d
、およびフローティングポイント数に%f
使用されます。
fmt.Printf
とfmt.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
の主な違いは次のとおりです。
fmt.Printf
フォーマットされた文字列を標準出力(コンソール)に直接書き込みますが、 fmt.Sprintf
フォーマットされた文字列を後で保存または使用できるstring
値として返します。fmt.Printf
は通常、コンソールへの即時出力が必要な場合に使用され、デバッグまたはインタラクティブなアプリケーションに適しています。対照的に、 fmt.Sprintf
、フォーマットされた文字列をさらに処理するか、使用前に変数に保存する必要がある場合に役立ちます。fmt.Printf
値を返しません。コンソールへの印刷の副作用のみを実行します。ただし、 fmt.Sprintf
フォーマットされた文字列を返します。これは変数に割り当てることができます。 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>
fmt.Fprintf
はfmt.Printf
に似ていますが、フォーマットされた出力の宛先を指定することができます。この関数は、 io.Writer
最初の引数として取得します。これは、 os.File
、 bytes.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 サイトの他の関連記事を参照してください。