文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
index 表达式
主要表达式格式:
a[x]
可以表示数组元素、数组的指针、切片、字符串或 map 类型 a 索引 x 对应的值。x 称作索引或者 map 的键。遵循以下规则:
如果 a 不是 map 类型:
索引 x 必须是整型或无类型常量。
常量索引必须是非负数且可以使用 int 类型表示。
无类型的常量索引会作为 int 型的值。
索引 x 的范围在
0<=x<len(a)
内,否则就是越界。
对于数组类型 A:
常量索引必须在合法范围内。
如果 x 在运行时越界会引起运行时恐慌。
a[x]
表示数组在索引 x 处的元素。a[x]
的类型就是 A 的元素类型。
对于数组的指针类型:
- 可以使用
a[x]
表示(*a)[x]
。
对于切片类型 S:
- 如果 x 在运行时越界会引起运行时恐慌。
a[x]
表示切片在索引 x 处的元素。a[x]
的类型就是 S 的元素类型。
对于字符串类型:
如果字符串 a 为常量,那么常量索引必须在合法范围内。
如果 x 在运行时越界会引起运行时恐慌。
a[x] 表示索引 x 处的非常量字节,它是 byte 类型。
不能对 a[x] 分配值。
对于 map 类型 M:
必须保证 x 的类型能够给 M 的键分配值。
如果 map 包含键为 x 的值,a[x] 就是 map 中键 x 对应的值,它的类型就是 M 的元素类型。
如果 map 值为 nil 或不包含这个实体,那么 a[x] 为 M 元素类型的零值。
否则 a[x] 就是非法的。
基于 map[K]V
类型 a 的索引表达式可以使用特殊格式的赋值和初始化语法。
v, ok = a[x]
v, ok := a[x]
var v, ok = a[x]
它会额外生成一个无类型的布尔值。如果 ok 是 true,那么代表在 map 中有该键,如果没有 ok 为 false。
给一个值为 nil 的 map 类型变量赋值会导致运行时恐慌。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论