为什么我的两个切片之一因“运行时错误:索引超出范围”而恐慌?

func main() {

        str1 := make([]string, 10)

        str2 := []string{}

        fmt.Println(str1[0]) *No error*

        fmt.Println(str2[0]) *error*

    }

为什么fmt.Println(str2[0])在 Go 中显示错误?


慕码人8056858
浏览 92回答 1
1回答

子衿沉夜

形式的主要表达a[x]表示数组的元素、指向数组、切片或a由 索引的字符串的指针x。该值x称为索引,如果 ,则索引x在范围内0 <= x < len(a),否则超出范围[]string{}make([]string, 0)与因此相同,0 >= len(str2)并且str2[0]超出范围..package mainimport (&nbsp; &nbsp; "fmt")func main() {&nbsp; &nbsp; str1 := make([]string, 10)&nbsp; &nbsp; fmt.Println(len(str1), cap(str1), str1)&nbsp; &nbsp; str2 := []string{}&nbsp; &nbsp; fmt.Println(len(str2), cap(str2), str2)&nbsp; &nbsp; fmt.Println(str1[0]) // *No error*&nbsp; &nbsp; fmt.Println(str2[0]) // *error*}游乐场: https: //play.golang.org/p/p31fUyb4pqW输出:10 10 [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;]0 0 []panic: runtime error: index out of range [0] with length 0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go