golang中的后勾有什么作用

aaj*_*aaj 2 go

我有一个这样定义的变量

var selectStatement = `
    SELECT role FROM abc INNER JOIN xyz ON (abc.name = 'Service list')
`
Run Code Online (Sandbox Code Playgroud)

现在我想做的是而不是使用硬编码的“服务列表”,我想读取一个变量值,例如

var myvar = "operation"
var selectStatement = `
    SELECT role FROM abc INNER JOIN xyz ON (abc.name = $myvar)
`
Run Code Online (Sandbox Code Playgroud)

我知道如果有的话就很简单"string"`string`。我怎样才能做到这一点。"string"和 和有什么区别`string`

eva*_*nal 7

` 那个反勾号(在波浪号键上)用于声明字符串文字。它使得您可以使用引号和换行符,并且它们按字面解释而不是破坏字符串。

为了解决您更大的问题,请使用fmt.Sprintf...

var selectStatement = `
    SELECT role FROM abc INNER JOIN xyz ON (abc.name = '%s')
`

selectStatement = fmt.Sprintf(selectStatement, ValueGoingWherePercentSIsNow)
Run Code Online (Sandbox Code Playgroud)


I15*_*159 5

这个问题实际上是两个问题:一个在主题中,一个在问题正文中。

` 在 Go 语言中做什么

`string`是原始字符串文字。在原始字符串文字(引号内)中,除了反引号之外,任何字符都可以出现。原始字符串文字是未解释的(隐式 UTF-8 编码)字符。这意味着反斜杠没有特殊含义,并且字符串可能包含换行符。

"string"是一个解释的字符串文字。使用解释的字符串文字反斜杠转义符解释为它们在符文文字中。尽管转义序列被解释为换行符,但它不能包含换行符\n

字符串插值

这是可以做的fmt.Sprintf

func main(){
    myvar := "operation"
    selectStatement := `
        SELECT role FROM abc INNER JOIN xyz ON (abc.name = %s)
    `
    interpolated := fmt.Sprintf(selectStatement, myvar)
}
Run Code Online (Sandbox Code Playgroud)

操场