在golang做什么?

时间:2016-08-18 18:20:32

标签: go

我有一个像这样定义的变量

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`之间有什么区别?

2 个答案:

答案 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)

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

在GoLang中做什么

`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)
}

Playground