获取字符串索引处的字符

che*_*ry7 0 go

func lengthOfLongestSubstring(s string) {
    match := make(map[string]int)
    var current string

    current = s[0]

    if match[current] == 1 {
        ///
    }

}
Run Code Online (Sandbox Code Playgroud)

为什么我收到错误cannot use s[0] (type byte) as type string in assignment?据我所知很明显s是 type string,为什么访问一个字符会将它变成 type byte?

小智 8

func lengthOfLongestSubstring(s string) {
    strArr:=[]rune(s) 
    fmt.Println(string(strArr[0]))

}
Run Code Online (Sandbox Code Playgroud)


小智 5

让我们看看其中一位 Go 设计师如何看待go中的字符串:

在 Go 中,字符串实际上是只读的字节片。如果您完全不确定字节片是什么或它是如何工作的,请阅读上一篇博文;我们在这里假设你有。

事先声明一个字符串包含任意字节是很重要的。不需要保存 Unicode 文本、UTF-8 文本或任何其他预定义格式。就字符串的内容而言,它完全等同于一个字节片。

因此,显然在您的情况下,s[0]是字节类型,如果您确实需要赋值,则需要显式大小写。