不能使用unicode字符作为符文

Ele*_*fee 2 unicode go rune

似乎golang不支持其符文的所有unicode字符

package main

import "fmt"

func main() {
  standardSuits := []rune{'??', '??', '??', '??'}
  fmt.Println(standardSuits)
}
Run Code Online (Sandbox Code Playgroud)

生成以下错误:

./main.go:6: missing '
./main.go:6: invalid identifier character U+FE0F '?'
./main.go:6: syntax error: unexpected ?, expecting comma or }
./main.go:6: missing '
./main.go:6: invalid identifier character U+FE0F '?'
./main.go:6: missing '
./main.go:6: invalid identifier character U+FE0F '?'
./main.go:6: missing '
./main.go:6: invalid identifier character U+FE0F '?'
./main.go:6: missing '
./main.go:6: too many errors
Run Code Online (Sandbox Code Playgroud)

有没有办法绕过这个,或者我应该忍受这个限制并使用其他东西?

kra*_*nko 5

它看起来像一个解析问题.您可以使用unicode点生成符文,这应该与使用chars的结果相同.

package main

import "fmt"

func main() {
  standardSuits := []rune{'\u2660', '\u2663', '\u2665', '\u2666', '?'}
  fmt.Println(standardSuits)
}
Run Code Online (Sandbox Code Playgroud)

生成

[9824 9827 9829 9830 8984]
Run Code Online (Sandbox Code Playgroud)

游乐场链接:https://play.golang.org/p/jTLsbs7DM1

我添加了额外的第5个符文来检查代码点或字符的结果是否相同.看起来确实如此.

编辑:

不确定你的字符有什么问题(没有在十六进制编辑器中查看它们,周围没有它们),但有些事情对它们很奇怪.

我还通过复制粘贴维基百科中的字符来运行:

package main

import "fmt"

func main() {
  standardSuits := []rune{'?', '?', '?', '?'}
  fmt.Println(standardSuits)
}
Run Code Online (Sandbox Code Playgroud)

https://play.golang.org/p/CKR0u2_IIB