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.Sprintfでstring とintをフォーマットし、stringにまとめてstrに格納している。
strはstring型なので、fmt.Println(str + "\n" + "ハンドルネーム:Sekky0905")というのが可能になっている。
参考にさせていただいたサイト
関連記事
※ ブログでも同一記事を投稿している
Go言語の便利なfmt.Sprintf ~任意の型と文字列をまとめて文字列(string型に)~