Go 速習チュートリアル

Go 言語のフォーマット指定子

1. Printf() のためのフォーマット指定子

Go言語は、Printf() ファンクションで使用できる数多くのフォーマット・ヴァーブ(Formatting Verbs)を提供しています。

1.1 汎用的なフォーマット指定子

以下のヴァーブは、すべてのデータタイプに使用できます。

ヴァーブ説明
%vデフォルトのフォーマットでバリューを出力する
%#vGoのシンタックス形式でバリューを出力する
%Tバリューのタイプを出力する
%%% 記号そのものを出力する

コード例:

package main
import ("fmt")

func main() {
  var i = 15.5
  var txt = "ハローワールド!"

  fmt.Printf("%v\n", i)
  fmt.Printf("%#v\n", i)
  fmt.Printf("%v%%\n", i)
  fmt.Printf("%T\n", i)

  fmt.Printf("%v\n", txt)
  fmt.Printf("%#v\n", txt)
  fmt.Printf("%T\n", txt)
}

実行結果:

15.5
15.5
15.5%
float64
ハローワールド!
"ハローワールド!"
string

2. インテジャー(Integer)のフォーマット指定子

以下のヴァーブは、インテジャー型のデータに使用できます。

ヴァーブ説明
%b2進数(Base 2)
%d10進数(Base 10)
%+d10進数(常に符号を表示)
%o8進数(Base 8)
%O8進数(先頭に 0o を付与)
%x16進数(Base 16)、小文字
%X16進数(Base 16)、大文字
%#x16進数(先頭に 0x を付与)
%4dスペースでパディング(幅4、右揃え)
%-4dスペースでパディング(幅4、左揃え)
%04dゼロでパディング(幅4)

コード例:

package main
import ("fmt")

func main() {
  var i = 15
 
  fmt.Printf("%b\n", i)
  fmt.Printf("%d\n", i)
  fmt.Printf("%+d\n", i)
  fmt.Printf("%o\n", i)
  fmt.Printf("%O\n", i)
  fmt.Printf("%x\n", i)
  fmt.Printf("%X\n", i)
  fmt.Printf("%#x\n", i)
  fmt.Printf("%4d\n", i)
  fmt.Printf("%-4d\n", i)
  fmt.Printf("%04d\n", i)
}

実行結果:

1111
15
+15
17
0o17
f
F
0xf
  15
15  
0015

3. ストリング(String)のフォーマット指定子

以下のヴァーブは、ストリング型のデータに使用できます。

ヴァーブ説明
%sプレーンなストリングとして出力
%qダブルクォーテーションで囲まれたストリングとして出力
%8sプレーンなストリングとして出力(幅8、右揃え)
%-8sプレーンなストリングとして出力(幅8、左揃え)
%xバイトバリューの16進数ダンプとして出力
% xスペース区切りの16進数ダンプとして出力

コード例:

package main
import ("fmt")

func main() {
  var txt = "ハロー"
 
  fmt.Printf("%s\n", txt)
  fmt.Printf("%q\n", txt)
  fmt.Printf("%8s\n", txt)
  fmt.Printf("%-8s\n", txt)
  fmt.Printf("%x\n", txt)
  fmt.Printf("% x\n", txt)
}

実行結果:

ハロー
"ハロー"
    ハロー
ハロー    
e3838fe383ade383bc
e3 83 8f e3 83 ad e3 83 bc

4. ブール(Boolean)のフォーマット指定子

以下のヴァーブは、ブール型のデータに使用できます。

ヴァーブ説明
%tブール演算子のバリューを true または false の形式で出力(%v と同様)

コード例:

package main
import ("fmt")

func main() {
  var i = true
  var j = false

  fmt.Printf("%t\n", i)
  fmt.Printf("%t\n", j)
}

実行結果:

true
false

5. フロート(Float)のフォーマット指定子

以下のヴァーブは、フロート型のデータに使用できます。

ヴァーブ説明
%e指数部分に 'e' を使用した指数表記(Scientific notation)
%f小数点表記、指数なし
%.2fデフォルトの幅、精度(小数点以下)2桁
%6.2f幅6、精度2桁
%g必要に応じて指数表記を使用、必要な桁のみ出力

コード例:

package main
import ("fmt")

func main() {
  var i = 3.141

  fmt.Printf("%e\n", i)
  fmt.Printf("%f\n", i)
  fmt.Printf("%.2f\n", i)
  fmt.Printf("%6.2f\n", i)
  fmt.Printf("%g\n", i)
}

実行結果:

3.141000e+00
3.141000
3.14
  3.14
3.141