2 回答
TA贡献1865条经验 获得超7个赞
包 fmt
import "fmt"显式参数索引:
在 Printf、Sprintf 和 Fprintf 中,默认行为是每个格式化动词格式化调用中传递的连续参数。但是,动词前的符号 [n] 表示要改为格式化第 n 个单索引参数。
v
您可以传递一次变量。例如,
package main
import "fmt"
func getTableCreationCommands(s string) string {
return fmt.Sprintf(`
CREATE TABLE share_%[1]v PARTITION OF share FOR VALUES IN (%[1]v);
CREATE TABLE nearby_%[1]v PARTITION OF nearby FOR VALUES IN (%[1]v);
`, s)
}
func main() {
fmt.Println(getTableCreationCommands(("X")))
}
游乐场:https://play.golang.org/p/fKV3iviuwll
输出:
CREATE TABLE share_X PARTITION OF share FOR VALUES IN (X);
CREATE TABLE nearby_X PARTITION OF nearby FOR VALUES IN (X);
TA贡献2012条经验 获得超12个赞
你也可以使用text/template:
package same
import (
"strings"
"text/template"
)
func getTableCreationCommands(v string) string {
t, b := new(template.Template), new(strings.Builder)
template.Must(t.Parse(`
CREATE TABLE nearby_{{.}} PARTITION OF nearby FOR VALUES IN ({{.}});
CREATE TABLE share_{{.}} PARTITION OF share FOR VALUES IN ({{.}});
`)).Execute(b, v)
return b.String()
}
https://pkg.go.dev/text/template
- 2 回答
- 0 关注
- 150 浏览
添加回答
举报