入出力

Go言語のfmt.Printfフォーマットの基礎と使い方について解説

Go言語では、fmt.Printfなどの関数を使って柔軟に出力ができます。

この記事では、基本的な使い方や指定子の役割をシンプルに解説し、実践的な内容を紹介します。

すでに開発環境が整っている方は、すぐに試してみたくなる情報が満載です。

基本的な使い方と構文

fmt.Printfの概要

fmt.Printfは、指定したフォーマットに従ってテキストを出力するための関数です。

数値、文字列、構造体などさまざまな値を表示する際に利用でき、書式指定子を使って出力形式を調整します。

たとえば、整数や浮動小数点数の表示形式、文字列の整形などに役立ちます。

基本構文の紹介

基本的な構文は以下のようになっています。

fmt.Printf("フォーマット文字列", 値1, 値2, …)

たとえば、整数と文字列を出力する例は次のようになります。

package main
import (
	"fmt"
)
func main() {
	// 整数と文字列をフォーマットして出力するサンプル
	var age int = 25
	var name string = "Taro"
	fmt.Printf("Name: %s, Age: %d\n", name, age)
}
Name: Taro, Age: 25

フォーマット指定子の種類

数値用指定子(%d, %fなど)

数値を出力する際に利用する指定子には、%d(整数)、%f(浮動小数点数)などがあります。

たとえば、整数の値をそのまま表示する場合は%d、浮動小数点数の場合は%fを使用します。

サンプルコードは以下の通りです。

package main
import (
	"fmt"
)
func main() {
	// 整数と浮動小数点数の出力例
	var number int = 100
	var price float64 = 199.99
	fmt.Printf("Number: %d, Price: %f\n", number, price)
}
Number: 100, Price: 199.990000

文字列およびその他の指定子(%s, %vなど)

文字列を出力する場合は%sを、変数のデフォルトフォーマットで出力したい場合は%vを使用します。

たとえば、構造体を出力する際は%vを利用することで、構造体のフィールドがそのまま表示されます。

下記は文字列と構造体を出力する例です。

package main
import (
	"fmt"
)
type Person struct {
	Name string
	Age  int
}
func main() {
	// 文字列と構造体の出力例
	var greeting string = "Hello"
	person := Person{Name: "Jiro", Age: 30}
	fmt.Printf("Greeting: %s, Person: %v\n", greeting, person)
}
Greeting: Hello, Person: {Jiro 30}

詳細なオプション設定

フィールド幅と精度の指定方法

フィールド幅と精度を指定することで、出力の整形が容易になります。

フィールド幅は表示する領域の幅を、精度は小数点以下の桁数などを指定します。

たとえば、%10sは、幅10の文字列として出力し、%6.2fは、6桁のうち小数点以下2桁を表示します。

幅および精度オプションの設定例

具体例として、整数の場合は右寄せ、浮動小数点数の場合は小数点以下の桁数を指定するサンプルコードを以下に示します。

package main
import (
	"fmt"
)
func main() {
	// フィールド幅と精度指定の例
	var number int = 123
	var price float64 = 45.6789
	// %10dは10桁分の右寄せ、%6.2fは全体6桁で小数点以下2桁を出力
	fmt.Printf("Formatted Number: %10d\n", number)
	fmt.Printf("Formatted Price: %6.2f\n", price)
}
Formatted Number:        123
Formatted Price: 45.68

フラグの利用方法

フラグを使うことで、符号の表示や左寄せなどの細かい表示制御が可能です。

例えば、%-10sは左寄せ、%+dは符号付きで整数を出力します。

以下に、フラグを利用したサンプルコードを示します。

package main
import (
	"fmt"
)
func main() {
	// フラグを利用した出力例
	var balance int = 500
	var debt int = -200
	// %+dは正負の符号を必ず表示し、%-10dは左寄せとなる
	fmt.Printf("Balance: %+d\n", balance)
	fmt.Printf("Debt: %+d\n", debt)
	fmt.Printf("Left aligned: %-10dEnd\n", balance)
}
Balance: +500
Debt: -200
Left aligned: 500       End

カスタム出力の工夫

独自フォーマットの作成例

独自のフォーマットを作成することで、特有の形式でデータを出力できます。

たとえば、複数の値を特定のパターンで並べることや、数値に単位を付加することが可能です。

以下は、数値に単位を付加しながら出力する例です。

package main
import (
	"fmt"
)
func main() {
	// 独自フォーマットで温度の出力例
	var temperature float64 = 36.5
	// "Temperature: 36.50℃"の形式で出力する
	fmt.Printf("Temperature: %6.2f℃\n", temperature)
}
Temperature:  36.50℃

実行環境での動作確認方法

実行環境での動作確認は、エディタやターミナル上でコンパイル・実行することで行います。

以下は、基本的なmain関数を含む例です。

実際に出力を確認することで、フォーマットの挙動を体感してください。

package main
import (
	"fmt"
)
func main() {
	// フォーマット確認用のサンプルデータ
	var id int = 101
	var description string = "Sample Item"
	// 複数の値を指定したフォーマットで出力する
	fmt.Printf("ID: %d, Description: %s\n", id, description)
}
ID: 101, Description: Sample Item

まとめ

この記事では、Go言語のfmt.Printfフォーマットについて、基本的な使い方や構文、各種指定子、フィールド幅・精度、フラグ、独自出力の工夫などを詳しく解説しました。

各機能の動作や設定方法が整理され、出力の整形方法について理解が深まりました。

ぜひ、実際にコードを書いて、様々なフォーマットの表現に挑戦してみてください。

関連記事

Back to top button
目次へ