Go言語の簡易スライス式(s[n:m])について
下記のコードにおいて、(2)はOKで、(3)がruntime errorになるのはどのような理由によるものでしょうか? Goのバージョンは"go1.11 darwin/amd64"です。
package main
import "fmt"
func main() {
a := "a"
fmt.Println(a[:len(a)]) // (1) "a"
fmt.Println(a[len(a):]) // (2) ""
// fmt.Println(a[len(a)]) // (3) panic - index out of range
// fmt.Println(a[len(a)+1:]) // (4) panic - slice bounds out of range
}