在反引号里怎么使用反引号

有个需求需要在反引号 ```go ` ` ``` 里面使用反引号 比如我要在里面写sql语句, sql中 用 例如 t.`type` 字段有时候要用反引号括起来防止和关键字冲突 但是 反引号 ```go ` ` ``` 在go里不清楚 怎么样才能包含转义的反引号, 用双引号" " 的话不能换行所以写sql比较麻烦。 请问大家有什么好的解决方式吗?
已邀请:

SuperFashi - To code or be coded, that's a question.

赞同来自: tupunco 浅小笑

没有办法。因为反引号就是代表原字符串,其会忽略除反引号之外的所有特殊字符,因此反引号是无法不忽略的(因为没有转义字符)。唯一的办法:
```
fmt.Println((`back ` + "`" + ` quote`))
```

tupunco

赞同来自: itfanr

按官方文档的说法确实没办法:
[The Go Programming Language Specification#String_literals](https://golang.org/ref/spec#String_literals)
Raw string literals are character sequences between back quotes, as in `foo`. `Within the quotes`, any character may appear except back quote. ...
```go
fmt.Println((`back ` + "`" + ` quote`))
```

h12 - https://h12.io/about

楼上都是正解,不过从另一个角度考虑这个问题,可以开启MySQL的SET sql_mode='ANSI_QUOTES'。这样就避免使用backtick而改用双引号包SQL关键字。

参考:
https://dev.mysql.com/doc/refman/8.0/en/identifiers.html

要回复问题请先登录注册