获取字符串索引处的字符

时间:2017-06-15 15:43:56

标签: go

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

    current = s[0]

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

}

为什么我收到错误cannot use s[0] (type byte) as type string in assignment?据我所知,s属于string类型,为什么访问某个字符会将其转换为byte类型?

2 个答案:

答案 0 :(得分:2)

让我们看看golang官方人员如何看待go(https://blog.golang.org/strings)中的字符串:

  

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

     

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

所以,显然在你的情况下,s [0]是一个字节类型,如果你真的需要赋值,你需要明确的情况。

答案 1 :(得分:2)

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

}