You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言中字符串len返回94而非实际51字符的原因咨询

问题原因解析
  • Go语言里的字符串本质是UTF-8编码的字节序列,len()函数返回的是字符串占用的字节总数,不是视觉上的字符个数。
  • 你代码里的字符串用的是西里尔字母(俄语字母),这类字符在UTF-8编码中每个占2个字节;而空格字符每个占1个字节。
  • 对应到你的场景:51个字符里包含若干空格和西里尔字母,算下来总字节数正好是94,和len()的返回结果匹配。

如果要获取实际的字符数量,可以用utf8.RuneCountInString()函数,示例代码如下:

package main

import (
    "fmt"
    "unicode/utf8"
)

func main() {
    s := "САЛИХА ХАМЗЕЕВНА ГАРИПОВА САЛ ХА ХАМЗЕ ВНА ГАР ПОВА"
    fmt.Println("字节数:", len(s))
    fmt.Println("字符数:", utf8.RuneCountInString(s))
}

运行后会输出字节数94、字符数51,和你的预期一致。

内容的提问来源于stack exchange,提问作者M.AhmedSiddiqui BM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 05:22:26