3 回答
TA贡献1772条经验 获得超8个赞
像这样:type Char rune
。
注意“比较”,这是 Unicode 的一个复杂的东西。虽然代码点 ( rune
s) 很容易在数字上比较 (U+0020 == U+0020; U+1234 < U+2345) 这可能是也可能不是您想要的情况,结合字符和 Unicode 提供的其他内容。
TA贡献1864条经验 获得超2个赞
要比较 utf8 字符串,您需要检查它们的符文值。Runevalue 是 utf8 字符的 int32 值。使用标准包“unicode/utf8”。传递“string[0:]”获取第一个字符
test := "春节"
runeValue, width := utf8.DecodeRuneInString(test[0:])
fmt.Println(runeValue,width)
fmt.Printf("%#U %d", runeValue, runeValue)
现在您可以使用 == 运算符比较两个字符串的第一个字符的 runeValue
如果要存储整个字符,还需要将字符串存储在字符串中。
type ds struct {
char string // What should Char be so that I can safely compare two ds?
}
完整的代码演示了这一点:
package main
import (
"fmt"
"unicode/utf8"
)
type ds struct {
char string // What should Char be so that I can safely compare two ds?
}
func main() {
fmt.Println("Hello, playground")
ds1 := ds{"春节"}
ds2 := ds{"春节"}
runeValue1, _ := utf8.DecodeRuneInString(ds1.char[0:])
runeValue2, _ := utf8.DecodeRuneInString(ds2.char[0:])
fmt.Printf("%#U %#U", runeValue1, runeValue2)
if runeValue1 == runeValue2 {
fmt.Println("\nFirst Char Same")
} else {
fmt.Println("\nDifferent")
}
}
TA贡献1777条经验 获得超10个赞
来自Volkers,答案,我们可以用符文来比较。
type Char rune
要获得第一个 unicode 字符,我们可以简单地做
[]rune(str)[0]
- 3 回答
- 0 关注
- 138 浏览
添加回答
举报