func main() { str1 := make([]string, 10) str2 := []string{} fmt.Println(str1[0]) *No error* fmt.Println(str2[0]) *error* }为什么fmt.Println(str2[0])在 Go 中显示错误?
1 回答
子衿沉夜
TA贡献1828条经验 获得超3个赞
形式的主要表达
a[x]表示数组的元素、指向数组、切片或
a
由 索引的字符串的指针x
。该值x
称为索引,如果 ,则索引
x
在范围内0 <= x < len(a)
,否则超出范围
[]string{}
make([]string, 0)
与因此相同,0 >= len(str2)
并且str2[0]
超出范围..
package main
import (
"fmt"
)
func main() {
str1 := make([]string, 10)
fmt.Println(len(str1), cap(str1), str1)
str2 := []string{}
fmt.Println(len(str2), cap(str2), str2)
fmt.Println(str1[0]) // *No error*
fmt.Println(str2[0]) // *error*
}
游乐场: https: //play.golang.org/p/p31fUyb4pqW
输出:
10 10 [ ]
0 0 []
panic: runtime error: index out of range [0] with length 0
- 1 回答
- 0 关注
- 91 浏览
添加回答
举报
0/150
提交
取消