fmtで出力する
3つを使い分ける
fmt にはよく使う関数が3つあります。名前が似ていますが、役割ははっきり違います。
プレーンテキスト
Println 画面に出す。最後に改行が付く
Printf 画面に出す。形を指定できる。改行は付かない
Sprintf 画面に出さず、文字列として返す最後の Sprintf だけ頭に S が付いています。この S は String の S で、「画面ではなく文字列に出す」という意味です。
Println はそのまま並べる
Go
fmt.Println("商品名", "きのこ図鑑")プレーンテキスト
商品名 きのこ図鑑渡したものを半角スペースで区切って並べ、最後に改行します。手軽ですが、間隔や桁を細かく決められません。
Printf は形を先に決める
Go
fmt.Printf("%s は %d 円です\n", "きのこ図鑑", 1200)プレーンテキスト
きのこ図鑑 は 1200 円です最初の文字列が型紙です。%s や %d の場所が、後ろに渡した値で埋まります。
プレーンテキスト
%s 文字列
%d 整数
%v なんでも。迷ったらこれ
%.1f 小数第1位までの数Printf は改行を付けないので、必要なら自分で \n を書きます。
Sprintf は返す
形は Printf と同じで、結果を画面ではなく戻り値にします。
Go
line := fmt.Sprintf("%s は %d 円です", "きのこ図鑑", 1200)組み立てた文字を、あとで別の処理に渡したいときに使います。このコースの演習は関数の戻り値で答え合わせをするので、使うのはほぼ Sprintf です。
数の埋め込みに注意
%d に文字列を渡すと、エラーではなく変な出力になります。
Go
fmt.Sprintf("%d 円", "1200")
// %!d(string=1200) 円%!d は「%d に整数でないものが来ました」という Go からの合図です。見かけたら型紙と渡した値を見比べてください。
要件
"きのこ図鑑"と1200を渡したらきのこ図鑑 / 1200円を返す- 価格の埋め込みには
%dを使う fmt.Sprintfで組み立てる
入出力例
formatItem("きのこ図鑑", 1200) → "きのこ図鑑 / 1200円"
formatItem("中古スマホ", 24800) → "中古スマホ / 24800円"
formatItem("おまけ", 0) → "おまけ / 0円"ヒント
編集 ゆめさく編集部