为什么此代码会将切片限制超出范围?

时间:2014-12-17 05:20:24

标签: go

我不知道为什么这段代码总是切片超出范围:

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]永远不会超出界限。

1 个答案:

答案 0 :(得分: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