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