導入
fmt パッケージは、Go で最も頻繁に使うパッケージです。「画面に出す」「ログに残す」「メッセージ文字列を組み立てる」――そのどれもが fmt の役目です。書式指定(フォーマット動詞)を押さえて、思い通りの表示を作れるようになりましょう。
説明
package main
import "fmt"
func main() {
name := "在庫管理システム"
version := 2
ready := true
fmt.Println(name, version, ready)
fmt.Printf("%s (v%d) 稼働中: %t\n", name, version, ready)
}
fmt.Println(...)… 値をスペース区切りで表示し、最後に改行する。手軽なデバッグ表示に向く。fmt.Printf(書式, ...)… 書式(フォーマット文字列)の%記号の場所に値を差し込む。改行は自分で\nを書く。
第1章で見た書式動詞を実務でよく使う順に振り返ります。
| 動詞 | 意味 |
|---|---|
%d | 整数 |
%s | 文字列 |
%t | 真偽値 |
%v | どんな型でも「よしなに」表示 |
Printf の仲間に、表示せず文字列として組み立てるだけの Sprintf もあります。
msg := fmt.Sprintf("状態レポート: %s (v%d)", name, version)
fmt.Println(msg)
エラーメッセージやログの文面を組み立てるときは、いきなり表示する Printf ではなく、いったん文字列にする Sprintf を使うのが定番です。組み立てた文字列を関数の戻り値にしたり、別の場所に渡したりできるからです。
やってみよう
Printf の書式文字列と、渡す値の個数と順番をそろえる感覚を確かめましょう。%s (v%d) 稼働中: %t の3つの動詞に対して、渡す値も3つ必要です。動詞を減らしたり増やしたりすると出力がどう崩れるか、試してみてください。
演習
商品名 item(文字列)・在庫数 stock(整数)・単価 price(整数)の3つの変数を使い、Printf で「item の在庫は stock 個、単価は price 円です」という1行を出力するコードを書いてください(item = "USBケーブル"、stock = 48、price = 980 とする)。
ヒント1を見る
書式文字列は "%s の在庫は %d 個、単価は %d 円です\n" のように、動詞の並びと値の並びを対応させます。
ヒント2を見る
fmt.Printf("%s の在庫は %d 個、単価は %d 円です\n", item, stock, price) の形で3つの値を順番どおり渡します。