Чтобы сравнить строки utf8, вам необходимо проверить их runevalue. Runevalue - значение int32 значения utf8. Используйте стандартный пакет «unicode/utf8». Pass «строку [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")
}
}
Golang Playground
Теперь я дал полный код, демонстрирующий это. – khrm