Я играл с кусочками и нашел то, что не могу объяснить. Я создаю строку общей длины 10 (индекс колеблется от 0 до 9), а затем я создаю из нее срез, указывающий один после максимального индекса, и он не паникует. Это паникует, если я пройду более одного мимо последнего индекса. Что я не понимаю, пожалуйста?
Я исследовал целочисленные срезы, а также подумал, что в строках может быть что-то странное, но он показал то же поведение.
Вот пример: я ожидал сбой на x:= str[10:]
.
package main
import "fmt"
func main() {
var str = "attribute="
x := str[10:]
fmt.Printf("type of x is %T\n", x)
//fmt.Printf("x is a %T and length of x is %d\n", x, len(x))
for k, v := range []byte(str) {
fmt.Printf("%d, %x\n", k, v)
}
}
Детская площадка: https://play.golang.org/p/Z-3YvTx3-s6
Выход:
type of x is string
0, 61
1, 74
2, 74
3, 72
4, 69
5, 62
6, 75
7, 74
8, 65
9, 3d