Go言語の文字列フォーマット!fmt.Sprintfで簡単に出力を整形する方法
生徒
「Go言語で文字列と数値を組み合わせて出力したいときはどうすればいいですか?」
先生
「その場合はfmt.Sprintfを使うと便利です。文字列の中に数値や他の変数を埋め込むことができます。」
生徒
「具体的にはどのように書くのですか?」
先生
「文字列の中に%dや%sなどの書式指定子を使って変数を埋め込みます。それでは基本的な使い方を見てみましょう!」
1. fmt.Sprintfとは?
Go言語のfmt.Sprintfは、文字列をフォーマットして新しい文字列を作るための関数です。Sprintfの「S」は「String」の意味で、出力結果を文字列として返す関数です。例えば、名前や年齢を文章にまとめて表示したいときに使えます。
2. 基本的な使い方
例えば、名前と年齢を文字列に組み合わせて表示する場合は次のように書きます。
package main
import (
"fmt"
)
func main() {
name := "太郎"
age := 25
result := fmt.Sprintf("私の名前は%sで、年齢は%d歳です。", name, age)
fmt.Println(result)
}
私の名前は太郎で、年齢は25歳です。
ここで%sは文字列、%dは整数を表す書式指定子です。文字列や数値を文章に埋め込むことができます。
3. 小数点や浮動小数点数のフォーマット
小数点を含む数値を文字列として整形したい場合は、%fを使います。小数点以下の桁数も指定可能です。
package main
import (
"fmt"
)
func main() {
price := 1234.567
result := fmt.Sprintf("商品の価格は%.2f円です。", price) // 小数点以下2桁
fmt.Println(result)
}
商品の価格は1234.57円です。
このように、小数点以下を指定したフォーマットで表示することができます。
4. 複数の変数を組み合わせる
複数の数値や文字列を同時にフォーマットしたい場合もfmt.Sprintfは便利です。順番に書式指定子を並べるだけで簡単に文字列化できます。
package main
import (
"fmt"
)
func main() {
name := "花子"
age := 30
height := 165.5
result := fmt.Sprintf("%sさんは%d歳で身長は%.1fcmです。", name, age, height)
fmt.Println(result)
}
花子さんは30歳で身長は165.5cmです。
文字列、整数、浮動小数点数を組み合わせる場合も、書式指定子と変数の順番を揃えることで簡単に整形できます。
5. fmt.Sprintfを使うときの注意点
書式指定子と変数の型が一致していないとエラーになります。例えば、%dは整数用なので文字列を渡すと実行時にエラーになります。必ず対応する型の書式指定子を使うようにしましょう。
また、Sprintfは文字列を返すだけで画面には表示しません。表示したい場合はfmt.Printlnやfmt.Printと組み合わせて使用します。
この関数を使いこなすと、ユーザー向けのメッセージやログ出力を見やすく整形することができます。
6. 文字列フォーマットの活用例
たとえば、日付や通貨、割合などを整形して表示したい場合にfmt.Sprintfは非常に便利です。固定幅で揃えたいときや、小数点以下を調整したいときに活用できます。これにより、見やすく読みやすい出力が簡単に作れます。