golangのfmt系のformatの機能のメモ

まじめに調べるなら以下を見たほうが良い。

https://golang.org/pkg/fmt/

reflection使った便利な出力

  • %T 値の方を表示
  • %v 値を良い感じに表示
  • %+v +フラグ付きで冗長出力表示。
  • %#v 値を型名やフィールド名も含めて出力

利用例

type Person struct {
    Name string
    Age int
}

func main(){
    person := Person{Name: "foo", Age: 20}
    fmt.Printf("%%T %T\n", person)
    fmt.Printf("%%v %v\n", person)
    fmt.Printf("%%v %#v\n", person)
}

/*
%T main.Person
%v {foo 20}
%v main.Person{Name:"foo", Age:20}
*/

同一の値を添え字で参照

1-originなことに注意

fmt.Printf("type=%[1]T, value=%[1]v, verbose=%#[1]v\n", person)

/*
type=main.Person, value={foo 20}, verbose=main.Person{Name:"foo", Age:20}
*/

quoteされた文字列の表示

%q が用意されている。

fmt.Printf("string = %q¥n", "foo")

/*
string = "foo"
*/

0-padding

0-paddingだけできる?

fmt.Printf("long=%06d, short=%04[1]d\n", 100)
/*
long=000100, short=0100
*/