概要
Goで文字列に対して変数の値を埋め込みたい場合、fmt.Sprintf
の関数を使うことがあると思います。Sprintfの概要については、【Golang】Sprintf関数で文字列を組み立てる方法を解説の記事を参照ください。
今回はこのSprintfで、同じ変数を複数箇所に埋め込む場合、どうするかというのをメモ書きします。(なお、Printfを使う場合でも同様の対応です)
対応方法
Replace all variables in Sprintf with same variableのstackoverflowの記事にある通り、%[1]v
のような形式で埋め込む設定のところにindexを付与すれば、実現できます。
実装サンプル
例題として第一著者 第二著者 第三著者
という文字列があるとします。この内、「第」の文字と「著者」の文字を、Sprintfを使用して変数で置き換えて文字列を取得します。
package main
import (
"fmt"
)
func main() {
result := fmt.Sprintf("%[1]s一%[2]s %[1]s二%[2]s %[1]s三%[2]s", "第", "著者")
}