我定义了一个枚举和结构类型,如下所示:type NodeType intconst ( City NodeType = iota Town Village)type AreaNode struct { Location Coord2D Type NodeType}现在我正在迭代一系列节点,每个节点都有一个类型if node, ok := area.Nodes[coord]; ok { switch node.Type { case node.Type == City: // do something for City case node.Type == Town: // do something for Town case node.Type == Outpost: // do something for Outpost }}但是我收到一个错误:二进制表达式中的类型不兼容。我该如何解决这个问题?
1 回答
慕丝7291255
TA贡献1859条经验 获得超6个赞
您要么执行switch没有值的 a ,并将比较表达式放在 each 中case,要么将每种情况视为==已检查值的 a 。例如:
if node, ok := area.Nodes[coord]; ok {
switch node.Type {
case City:
// do something for City
case Town:
// do something for Town
case Outpost:
// do something for Outpost
}
}
switch当您在不基于单个值的条件之间切换时,将使用另一种语法。例如
switch {
case node.Type == City:
// do something for City
case node.OtherParam == "foo":
///
}
这意味着基本上你是在二进制条件之间切换。就个人而言,我使用它只是为了从不依赖单个值的长 if/else 块中消除混乱,但我很少使用它。
- 1 回答
- 0 关注
- 193 浏览
添加回答
举报
0/150
提交
取消