3 回答
TA贡献1824条经验 获得超5个赞
使用字符串连接在多行上构造单个字符串值:
fmt.Sprintf("a:%s, b:%s " +
" ...... this goes really long",
s1, s2)
本示例中的长字符串是在编译时构建的,因为字符串连接是一个常量表达式。
您可以使用原始字符串文字在包含的换行符处拆分字符串:
fmt.Sprintf(`this text is on the first line
and this text is on the second line,
and third`)
TA贡献1155条经验 获得超0个赞
您还可以在反引号内使用原始字符串文字,如下所示:
columns := "id, name"
table := "users"
query := fmt.Sprintf(`
SELECT %s
FROM %s
`, columns, table)
fmt.Println(query)
这种方法有一些注意事项:
原始字符串不解析转义序列
所有空格都将被保留,因此FROM在此查询中的子句之前会有一个换行符和几个制表符。
这些问题对某些人来说可能是一个挑战,空格会产生一些难看的结果字符串。但是,我更喜欢这种方法,因为它允许您将长而复杂的 SQL 查询复制并粘贴到代码之外并粘贴到其他上下文中,例如用于测试的 sql 工作表。
TA贡献1775条经验 获得超8个赞
您还可以在反引号内使用原始字符串文字,如下所示:
columns := "id, name"
table := "users"
query := fmt.Sprintf(`
SELECT %s
FROM %s
`, columns, table)
fmt.Println(query)
这种方法有一些注意事项:
原始字符串不解析转义序列
所有空格都将被保留,因此FROM在此查询中的子句之前会有一个换行符和几个制表符。
这些问题对某些人来说可能是一个挑战,空格会产生一些难看的结果字符串。但是,我更喜欢这种方法,因为它允许您将长而复杂的 SQL 查询复制并粘贴到代码之外并粘贴到其他上下文中,例如用于测试的 sql 工作表。
- 3 回答
- 0 关注
- 421 浏览
添加回答
举报