如果映射包含一个带有键 x 的条目,则 a[x] 是带有键 x 的映射元素,并且 a[x] 的类型是 M 的元素类型但map[K]V 类型的映射 a 上的索引表达式,用于特殊形式的赋值或初始化v, ok := a[x]产生一个额外的无类型布尔值。我还在学习围棋。它是融入语言的“语法特征”并且“仅在使用此语法时起作用”,即调用v := a[x]并v, ok := a[x]表示为 AST 中不同类型的节点,如MapGetAndCheckExistsNode(m, k, v, ok)vs MapGet(m, k, v)?或者这是使用“正常”的 Go 语法实现的,索引函数以某种方式知道它的输出是否稍后被“解构”?是否可以使用语法强制索引表达式返回元组或结构s.v以及s.ok字段s := a[x]?
1 回答
jeck猫
TA贡献1909条经验 获得超7个赞
作为语言本身的一部分,这是一个任意规则。它用于避免类型转换的恐慌:
t, ok := x.(T)
或者检查地图中是否确实存在键:
v, ok := m[k]
或者检查接收是否有效:
x, ok := <-ch
用你自己的函数是不可能做到的,只有在语言设计者插入的这些特殊情况下。
- 1 回答
- 0 关注
- 99 浏览
添加回答
举报
0/150
提交
取消