いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-326 (バイトスライスを1バイトずつスペースを空けて出力)

概要

以下、自分用のメモです。忘れないうちにメモメモ。。。

大したことない話題なのですが、知ってるとちょっと便利です。

Goではバイトスライスをよく利用すると思います。

んで、よくその内容を出力することがあると思います。

その際に、各バイト毎にスペースを空けて表示した方が見やすいときが多いです。

fmt.Printfの書式に % x と指定すると1バイトずつスペースを空けて出力してくれます。

サンプル

package formatting

import (
    "fmt"

    "github.com/devlights/gomy/output"
)

// Numbers は、数値のフォーマットについてのサンプルです.
//
// # REFERENCES
//   - https://pkg.go.dev/fmt
func Numbers() error {
    // '+' を付与すると常に符号が表示される
    {
        x := 123
        fmt.Printf("%+d\n", x)
        fmt.Printf("%+d\n", x*-1)
    }
    output.StdoutHr()

    // 指定した値分だけ右側をスペースで埋める
    {
        x := 123
        fmt.Printf("'%-10d'\n", x)
        fmt.Printf("'%-10d'\n", x*-1)
    }
    output.StdoutHr()

    // 別の進数で出力
    {
        x := 0xff
        fmt.Printf("%d\n", x)
        fmt.Printf("%#b\n", x)
        fmt.Printf("%#x\n", x)
        fmt.Printf("%#o\n", x)
    }
    output.StdoutHr()

    // 要素毎にスペースを開けて出力
    {
        fmt.Printf("% x\n", [...]byte{253, 254, 255})
        fmt.Printf("% x\n", []byte{250, 251, 252})
        fmt.Printf("% x\n", "hello")
    }
    output.StdoutHr()

    // 0埋めして出力
    {
        fmt.Printf("'%08d'\n", 0xf0)
        fmt.Printf("'%08x'\n", 0xff)
        fmt.Printf("'%08b'\n", 0x0f)
    }

    return nil
}

実行すると以下のようになります。

gitpod /workspace/try-golang (master) $ task
task: [run] go run . -onetime

ENTER EXAMPLE NAME: formatting_numbers

[Name] "formatting_numbers"
+123
-123
-------------------------------------------------- 
'123       '
'-123      '
-------------------------------------------------- 
255
0b11111111
0xff
0377
-------------------------------------------------- 
fd fe ff
fa fb fc
68 65 6c 6c 6f
-------------------------------------------------- 
'00000240'
'000000ff'
'00001111'


[Elapsed] 86.93µs

参考情報

Goのおすすめ書籍

Go言語による並行処理

Go言語による並行処理

Amazon


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。