慕斯王
要比较 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 mainimport ( "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") }}