43
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

Go言語の便利なfmt.Sprintf ~任意の型と文字列をまとめて文字列(string型に)~

Go言語の便利なfmt.Sprintf ~任意の型と文字列をまとめて文字列(string型に)~

Goの静的型付けにおいて、stringと他の型をstring型として一緒に扱うことができるようにするfmt.Sprintfという便利な関数が存在する。

Goの書式指定子

Go言語は、静的型付けの言語あり、stringと他の型は一緒には扱えない。
そのため、書式指定子 が存在する。

例えば以下のようにできる。

package main

import (
    "fmt"
)

func main() {
    type Person struct {
        Age    int
        Height int
    }

    p := new(Person)
    p.Age = 26
    p.Height = 170

    fmt.Printf("年齢%d\n身長%d", p.Age, p.Height)
}

結果

年齢26
身長170

fmt.Sprintf を使う

上記のコードは、stringと構造体Personのフィールドを一緒に扱っていた。

書式指定子で、任意の型とstringを一緒に扱えるようになったはいいが、それ自体を文字列(string)として表すことはできないだろうか。
そんな時に活躍するのが、 fmt.Sprintfである。

fmt.Sprintf は、書式指定子に沿ってフォーマットした文字列を返してくれる。

package main

import (
    "fmt"
)

func main() {
    type Person struct {
        Age    int
        Height int
    }

    p := new(Person)
    p.Age = 26
    p.Height = 170

    str := fmt.Sprintf("年齢:%d\n身長:%d", p.Age, p.Height)
    fmt.Println(str)

}

結果

年齢:26
身長:170

上記のコードでは、 "年齢%d\n身長%d" という文字列(string)と p.Age, p.Height というint型が書式指定子によってフォーマットされ、それらが結合された文字列がstring型として、戻り値でstrに格納されている。

もう少し応用してみる

以下のようなことも可能だ。

package main

import (
    "fmt"
)

func main() {
    type Person struct {
        Age    int
        Height int
    }

    p := new(Person)
    p.Age = 26
    p.Height = 170

    str := fmt.Sprintf("年齢:%d\n身長:%d", p.Age, p.Height)
    fmt.Println(str + "\n" + "ハンドルネーム:Sekky0905")

}

上記のコードは、一旦fmt.Sprintfstring とintをフォーマットし、stringにまとめてstrに格納している。

strstring型なので、fmt.Println(str + "\n" + "ハンドルネーム:Sekky0905")というのが可能になっている。

参考にさせていただいたサイト

fmt.Sprintf

関連記事

忘れがちなGo言語の書式指定子を例付きでまとめた

※ ブログでも同一記事を投稿している
Go言語の便利なfmt.Sprintf ~任意の型と文字列をまとめて文字列(string型に)~

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
43
Help us understand the problem. What are the problem?