如何在Golang中向字符串添加单引号?

7
也许这是一个简单的问题,但我还没有弄清楚如何做到这一点:
我在Go中有一个字符串切片,我想将其表示为逗号分隔的字符串。下面是切片example
example := []string{"apple", "Bear", "kitty"}

我希望将其表示为用单引号分隔的逗号分隔字符串,即:

'apple', 'Bear', 'kitty'

我不知道如何在Go中高效地实现这个。
例如,strings.Join()会返回一个逗号分隔的字符串:
commaSep := strings.Join(example, ", ")
fmt.Println(commaSep)
// outputs: apple, Bear, kitty

接近但不是我需要的。我也知道如何使用strconv添加双引号,即

new := []string{}
for _, v := range foobar{
    v = strconv.Quote(v)
    new = append(new, v)

}
commaSepNew := strings.Join(new, ", ")
fmt.Println(commaSepNew)
// outputs: "apple", "Bear", "kitty"

再次强调,这不是我想要的。

如何输出字符串 'apple', 'Bear', 'kitty'


1
使用 new 作为变量名是个坏主意。new()allocation 函数。 - Tim
2个回答

17

以下代码怎么样?

commaSep := "'" + strings.Join(example, "', '") + "'"

Go Playground


这个在空切片下会失败:https://play.golang.org/p/C_KPKZAUm1e - colm.anseo
解决方案:if len(example) > 0 { /* 上面的代码 */ }。虽然 OP 没有明确说明如果切片为空,正确的输出是什么。 - phonaputer
我认为如果切片为空,则跳过。因此,上述条件将起作用。 - EB2127
谢谢你的帮助!我之前也考虑过类似的方法,但是想着或许有更好的方式——不过我一定会采用这种方法的。 - EB2127

1
fmt.Sprintf("%s%s%s", "'", strings.Join(example, "', '"), "'")

1
此答案已在低质量队列中进行了审核。以下是如何编写好的答案?的一些指南。仅有代码的答案不被认为是好的答案,并且很可能会因为对学习者社区不够有用而被投票降低或删除。这只是对您来说很明显。请解释它的作用,以及它与现有答案的不同之处/ 优点来自审核 - IndieGameDev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接