4

我开始学习围棋,我想实现一些算法。我可以遍历字符串然后获取字符,但这些字符是 Unicode 数字。

go - 如何在go中将字符连接成字符串?你有一些参考吗?我在官方页面中找不到任何关于原语的信息。

4

4 回答 4

9

using 遍历字符串range为您提供 Unicode 字符,而使用索引遍历字符串则为您提供字节。请参阅 符文字符串的规范以及它们的转换

正如 The New Idiot 所提到的,可以使用+ 操作符连接字符串。

从字符到字符串的转换是双重的。您可以将byte(或字节序列)转换为字符串:

string(byte('A'))

或者您可以将rune(或符文序列)转换为字符串:

string(rune('µ'))

不同之处在于符文代表 Unicode 字符,而字节代表 8 位值。

但是所有这些都在我上面链接的规范的各个部分中提到。这很容易理解,您绝对应该阅读它。

于 2013-06-26T08:04:57.133 回答
3

您可以[]rune直接将 a 转换为字符串:

string([]rune{'h', 'e', 'l', 'l', 'o', '☃'})

http://play.golang.org/p/P9vKXlo47c

作为参考,它位于 Go 规范的 Conversions 部分,在标题为“Conversions to and from a string type”的部分中

http://golang.org/ref/spec#Conversions

至于连接,您可能不希望将每个字符与+运算符连接起来,因为这会在后台执行大量复制。如果您一次只获得一个符文,并且没有构建中间的符文片段,那么您很可能想要使用 a bytes.Buffer,它有WriteRune处理这类事情的方法。 http://golang.org/pkg/bytes/#Buffer.WriteRune

于 2013-06-26T15:01:57.623 回答
2

利用+

str:= str + "a"

你可以尝试这样的事情:

string1 := "abc"
character1 := byte('A')
string1 += string(character1)

即使这个答案也可能会有所帮助。

于 2013-06-26T07:55:27.080 回答
0

绝对值得一读@nemo 的帖子

使用范围迭代字符串会给你 Unicode 字符,而使用索引迭代字符串会给你字节。请参阅符文和字符串的规范以及它们的转换。

可以使用 + 运算符连接字符串。

从字符到字符串的转换是双重的。您可以将字节(或字节序列)转换为字符串:

string(byte('A'))

或者您可以将符文(或符文序列)转换为字符串:

string(rune('µ'))
于 2019-01-31T00:28:17.467 回答