Golang_fmt.Printfのチートシート #466
GolangでもPrint出力があり、特にデバッグで便利そうなfmt.Printfではフォーマット指定子を使って変数の出力方法をコントロールできます。指定子が多いのでチートシート的にまとめたいと思います。
fmt.Printfのチートシート
フォーマット指定子はfmtパッケージの中でもPrintfで使用します。
基本的なフォーマット指定子
%d : 整数を出力
%f : 浮動小数点数を出力
%s : 文字列を出力
%t : ブール値(真偽値)を出力
詳細なフォーマット指定子
%v : デフォルトのフォーマットで値を出力
%+v : 構造体のフィールド名と値を出力
%#v : Goの構文に従った値を出力
%T : 値の型を出力
%% : リテラルのパーセント記号を出力
数値のフォーマット指定子
%b : 2進数で整数を出力
%c : 整数を対応するUnicode文字として出力
%o : 8進数で整数を出力
%x : 16進数で整数を出力(小文字)
%X : 16進数で整数を出力(大文字)
%e : 科学的表記で浮動小数点数を出力(小文字)
%E : 科学的表記で浮動小数点数を出力(大文字)
%g : 簡潔な形式で浮動小数点数を出力(%eまたは%fを使用)
%G : 簡潔な形式で浮動小数点数を出力(%Eまたは%fを使用)
特殊なフォーマット指定子
%p : ポインタの値を出力
%q : 文字列をクオート付きで出力
%U : Unicode形式で出力(例: U+1234)
数値のフォーマット指定子は細かいのはあまり使わない気もしますが、こういうのがあるというのは知っておいても良さそうです。
fmtパッケージの関数
GolangのPrint出力は主にfmtパッケージで行うことができ、以下のような種類があります。
fmt.Printf
上記のようにフォーマット指定子を使用して出力を制御します。改行は自身で明示的に記載する必要があります。
以下のように使います。
package main
import (
"fmt"
)
func main() {
// フォーマット指定子を使用して出力
fmt.Printf("整数: %d\n", 123)
fmt.Printf("浮動小数点数: %f\n", 123.456)
fmt.Printf("文字列: %s\n", "Hello, World!")
}
fmt.Print
そのままの形式で出力を行います。改行は自動的に挿入されません。
静的な出力のみ行いたい場合に使えます。
package main
import (
"fmt"
)
func main() {
// フォーマット指定子を使用せず、そのまま出力
fmt.Print("Hello, ")
fmt.Print("World!")
fmt.Print("\n") // 明示的に改行を追加
}
fmt.Println
Printlnは改行付きで出力を行い、かつ複数の引数をスペースで区切って出力します。フォーマット指定子は使用せずに変数の中身を出力できます。
以下のように使用します。
package main
import (
"fmt"
)
func main() {
// 文字列
str := "Hello, World!"
// 整数
num := 123
// 浮動小数点数
fnum := 123.456
// ブール値
isTrue := true
// 構造体
type Person struct {
Name string
Age int
}
p := Person{Name: "John", Age: 30}
// Printlnで変数を出力
fmt.Println("文字列:", str) // 文字列: Hello, World!
fmt.Println("整数:", num) // 整数: 123
fmt.Println("浮動小数点数:", fnum) // 浮動小数点数: 123.456
fmt.Println("ブール値:", isTrue) // ブール値: true
fmt.Println("構造体:", p) // 構造体: {John 30}
// 複数の変数を一度に出力
fmt.Println("複数の変数:", str, num, fnum, isTrue, p)
// 複数の変数: Hello, World! 123 123.456 true {John 30}
}
細かく制御せずにさっと出力したい場合などはPrintlnが簡単そうです。
ここまでお読みいただきありがとうございました!!
この記事が気に入ったらサポートをしてみませんか?