dongpu1908 2017-08-28 13:03
浏览 6
已采纳

通过替换相同的子字符串来格式化字符串

This question already has an answer here:

I have a code which looks like:

const query = `select * 
               from %s.dbo.table1 
               join %s.dbo.table2
                 on ....
               join %s.dbo.table3
                 on ....
               join %s.dbo.table4
                 on ....`

 fmt.Sprintf(query, dbName, dbName, dbName, dbName)

I just create a SQL query by inserting the database name to all %s occurrences. Is the a better way to do it without repeating dbName ?

</div>
  • 写回答

1条回答 默认 最新

  • dongzhou1901 2017-08-28 13:16
    关注

    Use %[1]s:

    const query = `select * 
               from %[1]s.dbo.table1 
               join %[1]s.dbo.table2
                 on ....
               join %[1]s.dbo.table3
                 on ....
               join %[1]s.dbo.table4
                 on ....`
    q := fmt.Sprintf(query, dbName)
    

    Playground: https://play.golang.org/p/2DDiGfxLPk.

    Documentation: https://golang.org/pkg/fmt/.

    For example,

    fmt.Sprintf("%[2]d %[1]d
    ", 11, 22)
    

    will yield "22 11", while

    fmt.Sprintf("%[3]*.[2]*[1]f", 12.0, 2, 6)
    

    equivalent to

    fmt.Sprintf("%6.2f", 12.0)
    

    will yield " 12.00". (…)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 STM32无法向设备写入固件
  • ¥15 使用ESP8266连接阿里云出现问题
  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并