🏠 ホーム
フロントエンド
PHP
Go言語
プログラミングの理解
プログラマーへの道
Google API

Goのログ出力:log.Println と log.Printf の違いを理解しよう

  プログラミング >     Go言語 >  

Go言語でログを出力する際に使われる標準ライブラリの log パッケージ。この記事では、特に使用頻度が高い log.Printlnlog.Printf の違いについて解説します。それぞれの使い方とメリットを知ることで、デバッグ効率やログの可読性を向上させましょう。


log.Println の特徴

サンプルコード

package main

import (
	"log"
)

func main() {
	err := "some-error"
	form := map[string][]string{"key1": {"value1"}, "key2": {"value2"}}
	path := "/example/path"

	log.Println("Println:", err, form, path)
}

出力例

Println: some-error map[key1:[value1] key2:[value2]] /example/path

log.Printf の特徴

サンプルコード

package main

import (
	"log"
)

func main() {
	err := "some-error"
	form := map[string][]string{"key1": {"value1"}, "key2": {"value2"}}
	path := "/example/path"

	log.Printf("Printf: err=%q, form=%+v, path=%q", err, form, path)
}

出力例

Printf: err="some-error", form=map[key1:[value1] key2:[value2]], path="/example/path"

どちらを使うべき?

log.Println を使う場面

log.Printf を使う場面


log.Printf のフォーマット例

以下の表は、log.Printf で使えるフォーマット指定子の一部です。

指定子 説明 出力例
%v デフォルト形式で出力 map[key1:[value1]]
%+v 構造体の場合、フィールド名付きで出力 {Key:key1 Value:value1}
%#v Go構文形式で詳細出力 map[string][]string{"key":[value]}
%q クォート付きで文字列を出力 "Hello, World!"
%04d 整数を4桁ゼロ埋めで出力 0042
%.2f 小数点以下2桁で丸めた浮動小数点数を出力 3.14

引数がない場合の挙動

log.Printf はフォーマット文字列が必要ですが、引数が空の場合は単にフォーマット文字列がそのまま出力されます。例えば以下のようなコード:

log.Printf("Printf: %v;", err)

引数 err が空の場合も安全に動作しますが、出力はシンプルになります。


結論:使い分けをマスターしよう

どちらも適材適所で使い分けることで、ログの品質を向上させ、デバッグ作業を効率化できます! 🎯


ぜひ、実際のコードで試してみてください! 😊

登録日:

更新日:

by

コメント         tweetでコメント