Go中的切片字符串:如何切片阿拉伯语(或其他unicode)字符串?

Go中的切片字符串:如何切片阿拉伯语(或其他unicode)字符串?,unicode,go,slice,Unicode,Go,Slice,我需要在围棋中切一根线。有时我有拉丁字符,否则我有阿拉伯字符,但阿拉伯语的[:1]返回不同的值 package main import "fmt" func main() { a := "a" fmt.Println(a[:1]) // work b := "ذ" fmt.Println(b[:1]) // not work fmt.Println(b[:2]) // work fmt.Println(len(a) == len(b)) /

我需要在围棋中切一根线。有时我有拉丁字符,否则我有阿拉伯字符,但阿拉伯语的[:1]返回不同的值

package main

import "fmt"

func main() {
    a := "a"
    fmt.Println(a[:1]) // work

    b := "ذ"
    fmt.Println(b[:1]) // not work
    fmt.Println(b[:2]) // work

    fmt.Println(len(a) == len(b)) // false
}

首先,你应该真正了解

下面是你如何实现你想要的:(我无法正确粘贴阿拉伯符号,但如果中文行得通,阿拉伯语也应该行)

输出为:

cdefghi
百科:关于中文

您可以使用
utf8string
软件包:

主程序包
导入“golang.org/x/exp/utf8string”
func main(){

a:=utf8string.NewString(“您可以在
golang.org/x/exp/utf8string
方法中使用
。它起作用了。谢谢。注意:我使用了utf8.runecounnstring来获取字符串大小。函数len计算字节,而不是字符。
cdefghi
百科:关于中文