我开始学习go,我想实现一些算法。我可以迭代字符串然后获取字符,但这些字符是Unicode数字。
如何将chars连接成字符串?你有一些参考吗?我无法在官方页面找到关于原语的任何内容。
答案 0 :(得分:7)
使用range
迭代字符串可以获得Unicode字符
使用索引迭代字符串会给出字节。请参阅规格
runes和strings以及conversions。
正如The New Idiot所提到的,可以使用+
operator连接字符串。
从字符到字符串的转换是双重的。你可以转换
字符串的byte
(或字节序列):
string(byte('A'))
或者您可以将rune
(或符文序列)转换为字符串:
string(rune('µ'))
区别在于符号表示Unicode字符,而字节表示 8位值。
但是我在上面链接的规范的相应部分中提到了所有这些。 这很容易理解,你一定要读它。
答案 1 :(得分:3)
您可以直接将[]rune
转换为字符串:
string([]rune{'h', 'e', 'l', 'l', 'o', '☃'})
http://play.golang.org/p/P9vKXlo47c
作为参考,它位于Go规范的转换部分,标题为“转换为字符串类型的转换”部分
http://golang.org/ref/spec#Conversions
对于连接,您可能不希望将每个字符与+
运算符连接起来,因为这将在引擎盖下执行大量复制。如果你一次一个地获得符文并且你没有构建符文的中间片段,那么你很可能想要使用bytes.Buffer
,它具有WriteRune
方法来处理这类事情。 http://golang.org/pkg/bytes/#Buffer.WriteRune
答案 2 :(得分:2)
使用+
str:= str + "a"
您可以尝试这样的事情:
string1 := "abc"
character1 := byte('A')
string1 += string(character1)
即使this answer可能会有所帮助。
答案 3 :(得分:0)
definetly值得一读@尼莫的帖子
使用范围对字符串进行迭代可为您提供Unicode字符,而使用索引对字符串进行迭代可为您提供字节。参见符和字符串以及它们的转换规范。
的字符串可以使用+运算符级联。
从字符到字符串的转换是双重的。可以将字节(或字节序列)转换为字符串:
string(byte('A'))
或者您可以将符文(或符文序列)转换为字符串:
string(rune('µ'))