返回
Featured image of post Go语言里面rune和byte的隐藏大坑

Go语言里面rune和byte的隐藏大坑

刷题的时候可能是最难发现的一个错误了

字符串真的是我最不喜欢的题目之一了,就是总有一些乱七八糟的小错会卡死我,然后还很不明显,其中我觉得最容易出错的就是rune格式和byte格式的差异了,这个问题在于它很蠢,它是个语法层面的错误,面试官可能都不能一时间告诉我这里出错了

核心口诀

核心的来说,一言以蔽之: 索引一定出byte,遍历一定出rune

什么时候string会弄出byte

任何使用索引的时候都会出现byte 例如直接使用索引:

1
return word[i]

或者使用遍历,但是用的是遍历的索引去访问:

1
2
3
for i, r := range word{
    return word[i]
}

或者使用长度去遍历

1
2
3
for i := 0; i < len(word); i++{
    return word[i]
}

这个之前一直没注意,偶尔就会出问题,终于是总结了一下

什么时候string会弄出rune

那就是使用range索引而且使用了值的时候

1
2
3
for i, r := range word{
    return r
}

总结

其实我觉得,byterune是极其优雅的设计,是我菜,我检讨

Golang官网图
© 2023 - 2025 壹壹贰捌· 0Days
共书写了265.7k字·共 93篇文章 京ICP备2023035941号-1