我有一个像这样定义的变量
var selectStatement = `
SELECT role FROM abc INNER JOIN xyz ON (abc.name = 'Service list')
`
现在我想做的不是使用硬编码的服务列表'我想读一个类似
的变量值var myvar = "operation"
var selectStatement = `
SELECT role FROM abc INNER JOIN xyz ON (abc.name = $myvar)
`
如果"string"
代替`string`
,我知道这很简单。
我怎样才能做到这一点。 "string"
和`string`
之间有什么区别?
答案 0 :(得分:2)
`返回tick,(在代字键上)用于声明字符串文字。它使得你可以有引号和新行,它们按字面解释而不是破坏字符串。
要解决您的更大问题,请使用fmt.Sprintf
以便......
var selectStatement = `
SELECT role FROM abc INNER JOIN xyz ON (abc.name = '%s')
`
selectStatement = fmt.Sprintf(selectStatement, ValueGoingWherePercentSIsNow)
答案 1 :(得分:1)
这个问题实际上是两个问题:一个是主题,另一个是问题正文。
`string`
是原始字符串文字。在原始字符串文字(引号内)中,除反向引号外,任何字符都可能出现。原始字符串文字是未解释的(隐式UTF-8编码)字符。这意味着反斜杠没有特殊含义,字符串可能包含换行符。
"string"
是一个解释的字符串文字。使用解释的字符串文字反斜杠转义符,因为它们在符文文字中。它不能包含新行。
可以使用fmt.Sprintf
func main(){
myvar := "operation"
selectStatement := `
SELECT role FROM abc INNER JOIN xyz ON (abc.name = %s)
`
interpolated := fmt.Sprintf(selectStatement, myvar)
}