見出し画像

golangのfmt.Printf関数の使い方 %v、%d、%s、%t、%pの違い

今回はgolangにおけるfmt.Printf関数について解説していきます。


fmt.Printf関数

fmt.Printf関数は複数ある標準出力関数のうちの一つです。他にもfmt.Print関数とfmt.Println関数がよく使われるため混同しがちです。

fmt.Printf関数は、書式付きの文字列と共に一緒に渡された引数を出力することができます。fmt.Println関数とは違い改行はされないため、改行を行いたい場合は独自に改行をさせてあげる必要があります。


fmt.Printf関数の使い方

それではどのようにfmt.Printf関数を使うかコードを見てみましょう。

func main() {
	a := "World"
	fmt.Printf("Hello %v", a)
}

上記コードの実行結果はHello Worldになります。

Helloのあとに%vと書くことで、二つ目の引数である変数aの値を代入しています。

この%vは書式指定子の一種なのですが、他にも様々な種類があります。


golangの書式指定子一覧

それでは他に何の書式指定子があるんでしょうか。

%v:デフォルトのフォーマット
%t:論理値(bool)
%d:符号付き整数(int, int8など)
%d:符号なし整数(uint, uint8など)
%g:浮動小数点数(float64など)
%g:複素数(complex128など)
%s:文字列(string)
%p:チャネル(chan)
%p:ポインタ(pointer)
%%:%を出力
%c:文字
%T:型
%b:2進数

ざっとこれくらいの種類がありますが、使う頻度が高いのは%s、%d、%t、%Tあたりです。

fmt.Print関数とfmt.Println関数に比べてかなり自由度の高いのがfmt.Printf関数です。混同しないようにしっかりと覚えておきましょう。


fmt.Printf関数の注意点

戻り値のチェック

fmt.Printfは出力されたバイト数とエラーの2つの値を返します。
特にエラーをチェックする必要がある場合は戻り値を無視しないようにしましょう。


改行

fmt.Printfは自動的に改行は行われません。
改行が必要な場合は、\nを文字列の末尾に追加する必要があります。


セキュリティ

フォーマット文字列攻撃防止のためにもユーザー入力を直接フォーマット文字列として使用することは避けるようにしましょう。


golangをもっと詳しくなりたい方に

初めてのGo言語

Go言語の入門から応用まではこの一冊で網羅されています。説明も順序立てて説明されており完成度の高い参考書となっています。


詳解Go言語Webアプリケーション開発

こちらはGo言語の基礎知識を得たあとに読むことをすすめる本となっています。ハンズオン形式で手を動かしながら実装をしていくことができるため、実際の開発を意識しながらGo言語を学ぶことができます。

以下の記事では他にも筆者が実際に読んでおすすめしたい本をまとめています。


【Go入門】Golang基礎入門 + 各種ライブラリ + 簡単なTodoWebアプリケーション開発(Go言語)

まだGo言語の勉強を始めていない方、全くの初心者の方にはこちらのUdemy教材が最もおすすめです。

この教材ではgolangの基礎について網羅的に学ぶことができます。ただ見て学ぶだけでなく、講座の中でアプリ作成まで行うことで学んだことの理解をさらに深めることができます。


現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発

個人的に最も勉強になったのは「現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発」という教材です。
本格的なレクチャーに入る前に、なぜGoなのか、なぜFintechなのかについて説明されていることで、Goの概念や意味について大枠から理解することができます。

以下の記事では筆者が実際に受講したおすすめUdemy教材をまとめています。

※本ページではアフィリエイトリンク(PR)が含まれています


この記事が参加している募集

#この経験に学べ

54,382件

この記事が気に入ったらサポートをしてみませんか?