Go 编程语言规范规定,仅包含可比较字段的结构应该是可比较的。但是,在尝试使用有序运算符比较结构时会出现问题。
考虑以下代码:
package main type Student struct { Name string Score uint8 } func main() { alice := Student{"Alice", 98} carol := Student{"Carol", 72} if alice >= carol { println("Alice >= Carol") } else { println("Alice < Carol") } }
预计,由于具有可比较的字段,此代码可以成功编译。但是,尝试使用 >= 运算符比较结构会失败,并显示:
invalid operation: alice >= carol (operator >= not defined on struct)
在 Go 中,结构是可比较的,但没有顺序。 规范澄清了这一点:
“排序运算符 和 >= 适用于以下操作数"
因此,虽然可以比较结构是否相等,但不能使用像 >= 这样的运算符对它们进行排序,如上面的示例所示。
以上是为什么不能使用顺序运算符比较 Go 结构?的详细内容。更多信息请关注PHP中文网其他相关文章!