見出し画像

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が簡単そうです。


ここまでお読みいただきありがとうございました!!

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