Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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型に)~

Sekky0905
最近GoとGCPに戻ってきました。 以前は、GAE/Go、AWS、TypeScript、Angular、Vueをやっていました。
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした