kurumi-bioの雑記帳

プログラミング、パソコン、ペット、 犬、お出かけ

初心者のGo言語 その3 <書式設定とfmt.Printf>

こんにちは、kurumi-bioです。3回目のブログです。
前回に引き続きGo言語について発信します。

 

 

環境

OSバージョン:Windows11 Home 22H2

Go言語のバージョン:go version go1.19.4 windows/amd64

 

Printing(Integer)

fmtパッケージのPrintingのIntegerについて色々と試してみます。
整数の書式設定だと思います。

Go言語の公式ページのPackagesでfmtパッケージの機能を調べると下記の通り記載されています。

与えられた整数値を2進数、10進数、8進数(プレフィックスあり/なし)、16進数(小文字/大文字)の書式で表示することができるみたいです。
なお、%c,%q,%Uは、ユニコード(文字コード)の書式設定ですので、今回は省きます。

Printf

整数の書式設定を試すためには、表示用の関数を使う必要があります。
同ページの真ん中あたりに"Index"が記載されていて、
出力は、Print,Printf,Printlnの三種類の関数が用意されています。

この三種類の関数で、書式(format)が指定できるPrintf関数で試してみます。
整数値20を2進数、10進数、8進数、16進数にして出力するプログラムです。
例)PrintingTest.go

package main

import "fmt"

func main() {
    fmt.Printf("%b %d %o %O %x %X\n",20,20,20,20,20,20)
}

ちょっとわかりずらいですが、各基数で表示されていることがわかります。


20ですと、16進数の大文字小文字の違いがわからないので、
For文を使って0から16までの数値を表示するように変更します。
合わせて、各基数の桁数も指定するようにしました。
例)PrintingLoop.go

package main

import "fmt"

func main() {
    for i := 0; i < 17; i++ {
        fmt.Printf("%5b %2d %2o %4O %2x %2X\n",i,i,i,i,i,i)
    }
}

いかがでしょうか、桁数を指定したことで区切り位置が定まり、かなり見やすくなったと思います。

最後に

書式設定に基数が含まれているのが新鮮でした。
ユニコードも試してみたかったのですが、"code point"がわからなくて、今回は時間切れです。他の書式設定を試しながら"code point"も調べてみたいと思います。