在 shell 中具有特殊含义的字符需要被引用或转义。您可以在 shell 的手册页中找到完整列表(在 中的“引用”下man 1 bash)。在这种情况下,您可以引用或转义 baskslash-string=hello\\Bob// or-string='hello\Bob'
3 回答
忽然笑
TA贡献1806条经验 获得超5个赞
这一行:
fruits := [4]string{"apple", "orange", "mango"}
创建一个数组,而不是一个切片。即使您只提供了 3 个元素,它也有 4 个元素。输出fmt.Printf("%q", fruits)
:
["apple" "orange" "mango" ""]
切片:
tasty_fruits := fruits[1:3]
结果是:
["orange" "mango"]
长度:显然 2.容量?
的容量是...的片的长度和超过所述切片中的[基本]阵列的长度的总和。
由于"mango"
底层数组中有一个元素,因此容量为2 + 1 = 3
。
索引切片 ( tasty_fruits
): 规范:索引表达式:
对于
a
切片类型S
:a[x]
如果
x
在运行时超出范围,则会发生运行时恐慌
x
如果在范围内0 <= x < len(a)
,否则超出范围。由于len(tasty_fruits)
is 2
,索引2
超出范围,因此发生运行时恐慌。
您不能索引超出切片长度的切片,即使容量允许。如果您重新切片,则只能到达超出长度的元素,例如:
tasty_fruits2 := tasty_fruits[:3] tasty_fruits2[2] = "nectarine" // This is ok, len(tasty_fruits2) = 3 fmt.Printf("%q", tasty_fruits2)
输出:
["orange" "mango" "nectarine"]
慕丝7291255
TA贡献1859条经验 获得超6个赞
切片的容量取决于底层数组的大小。因此,如果您更改fruits
为具有差异大小,例如:
fruits := [5]string{"apple", "orange", "mango"}
cap(tasty_fruits) 将返回 4 而不是 3。
所以容量意味着切片可以扩展到的最大大小。“切片不能超过其容量。尝试这样做会导致运行时恐慌”。
切片本质上是c
带有边界检查的指针。切片的长度是它将在运行时检查的边界。因此,如果您尝试访问超出长度的任何内容,也会导致运行时恐慌。
是的,长度 <= 容量总是正确的。
- 3 回答
- 0 关注
- 198 浏览
添加回答
举报
0/150
提交
取消