我看过许多关于将数组与Java结合使用的文章,但我正在尝试做一些不同的事情。我想使用Go读取配置文件,因为它可以访问服务器端,并在将与模板一起呈现的javascript函数中使用它。这是为了避免在JavaScript中对值进行硬编码:
我想更改此:
javaString += "function isValidPrefix() {"
javaString += "forbidden_prefixes = [ \"1\", \"2\", \"3\", \"4\", \"5\", \"6\" ];"
... more javascript ...
javaString += "}"
将前缀放在文件中的文件,这样就不必每次都想添加前缀时都重新编译。
所以我尝试了这个:
var configArr []string
configArr = LoadFile("/conf.dat")
javaString += "forbidden_prefixes = [];"
for _, eachline := range configArr {
javaString += "forbidden_prefixes.push(\" + eachline + \");"
fmt.Println(eachline)
}
eachLine
在for循环中正确打印,但是forbidden_prefixes包含一个元素+ eachLine +
,我认为这是一个语法错误,但是即使我尝试检索DOM元素的值来进行检查,Web控制台也表示该元素不存在。硬编码的值一切正常。我是在做错什么,还是根本不可能?
您正在使用文字量构建字符串,而不使用您打算使用的变量。试试这个:
javaString += fmt.Sprintf("forbidden_prefixes.push(\"%s\");",eachline)
问题确实来自您的语法。您对引号进行了转义,因此+
运算符实际上是字符串的一部分。这是两个可能的解决方案:
javaString += "forbidden_prefixes.push(\"" + eachline + "\");"
或
javaString += fmt.Sprintf("forbidden_prefixes.push(%q);", eachline)
[%q
”将其替换为的值前后加上引号。