英文:
Why this code raise slice bound out of range?
问题
我不知道为什么这段代码总是超出范围:
parts := make([]string, 0, len(encodedCode)/4)
for i := 0; i < len(encodedCode); i += 4 {
parts = append(parts, encodedCode[i:4])
}
encodedCode
是一个长度总是是4的倍数的字符串。这意味着 encodedCode[i:4]
永远不会超出范围。
英文:
I have no idea why this code always slice bound out of range:
<!-- language: lang-golang -->
parts := make([]string, 0, len(encodedCode)/4)
for i := 0; i < len(encodedCode); i += 4 {
parts = append(parts, encodedCode[i:4])
}
encodedCode
is string with length always multiply with 4. That mean encodedCode[i:4]
never out of bound.
答案1
得分: 5
切片是 [idx_start:idx_end+1],而不是 [idx_start:length]
试试这个。
parts := make([]string, 0, len(encodedCode)/4)
for i := 0; i < len(encodedCode); i += 4 {
parts = append(parts, encodedCode[i:i+4])
}
好的示例可以在这里找到:http://blog.golang.org/go-slices-usage-and-internals
英文:
Slices are [idx_start:idx_end+1], not [idx_start:length]
Try this.
parts := make([]string, 0, len(encodedCode)/4)
for i := 0; i < len(encodedCode); i += 4 {
parts = append(parts, encodedCode[i:i+4])
}
Good examples @ http://blog.golang.org/go-slices-usage-and-internals
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论