GolangのSprintf関数とは
GolangのSprintfは、fmtパッケージに属している関数で、フォーマット指定子に従ってフォーマットした結果の文字列を返します。
上記の説明だと少しわかりづらいので噛み砕いて言いますと、文字列の中に変数を埋め込むことができ、その結果新しい文字列を返すということです。
また、その変数がstring型だとフォーマット指定子(埋め込む場所を示す値)は「%s」、int型だとフォーマット指定子は「%d」となります。
// 変数が文字列の場合
fmt.Sprintf("My name is %s.", 変数)
// 変数が数値の場合
fmt.Sprintf("I'm %d", 変数)
Sprintf関数の具体的なコード例
name(string型)とage(int型)という変数を文字列の中に埋め込み、新しく取得した文字列を出力する処理をしてみます。
package main
import (
"fmt"
)
func main() {
name := "Tanaka"
age := 20
text1 := fmt.Sprintf("My name is %s.", name) // string型変数の埋め込み
text2 := fmt.Sprintf("I'm %d years old.", age) // int型変数の埋め込み
fmt.Println(text1)
fmt.Println(text2)
}
実行結果は以下の通り。
My name is Tanaka.
I'm 20 years old.
もし、フォーマット指定子を逆にすると、以下のように指定する変数のデータ型が違うと怒られしまうので注意が必要です。
My name is %!d(string=Tanaka).
I'm %!s(int=20) years old.