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}
詳細なオプション設定
フィールド幅と精度の指定方法
フィールド幅と精度を指定することで、出力の整形が容易になります。
フィールド幅は表示する領域の幅を、精度は小数点以下の桁数などを指定します。
たとえば、
幅および精度オプションの設定例
具体例として、整数の場合は右寄せ、浮動小数点数の場合は小数点以下の桁数を指定するサンプルコードを以下に示します。
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フォーマットについて、基本的な使い方や構文、各種指定子、フィールド幅・精度、フラグ、独自出力の工夫などを詳しく解説しました。
各機能の動作や設定方法が整理され、出力の整形方法について理解が深まりました。
ぜひ、実際にコードを書いて、様々なフォーマットの表現に挑戦してみてください。