当前位置: 首页 > 面试题库 >

Go结构比较

晏阳飙
2023-03-14
问题内容

比较运算符的 “
Go编程语言规范”部分使我相信,仅包含可比较字段的结构应具有可比性:

如果结构的所有字段都是可比较的,则它们的值是可比较的。如果两个结构值对应的非空白字段相等,则它们相等。

这样,由于“ Student”结构中的所有字段都是可比较的,因此我希望编译以下代码:

package main

type Student struct {
  Name  string // "String values are comparable and ordered, lexically byte-wise."
  Score uint8  // "Integer values are comparable and ordered, in the usual way."
}

func main() {
  alice := Student{"Alice", 98}
  carol := Student{"Carol", 72}

  if alice >= carol {
    println("Alice >= Carol")
  } else {
    println("Alice < Carol")
  }
}

但是,它无法使用以下消息进行编译:

无效的操作:alice> = carol(运算符> =未在结构上定义)

我想念什么?


问题答案:

您是正确的,结构是 可比较的 ,但没有 排序
(规范):

等于运算符==!=适用于可比较的操作数。排序运营商<<=>>=适用于排序操作数。

  • 如果结构的所有字段都是可 比较的, 则其值是 比较的。如果两个结构值对应的非空白字段相等,则它们相等。

>= 是有序运算符,而不是可比运算符。



 类似资料:
  • Go语言结构体数据类是将各个类型的变量定义的集合,通常用来表示记录。 package main import "fmt" // 这个person结构体有name和age成员 type person struct { name string age int } func main() { // 这个语法创建一个新结构体变量 fmt.Println(person{"B

  • 在我们开始学习 Go 编程语言的基础构建模块前,让我们先来了解 Go 语言最简单程序的结构。 Go Hello World 实例 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 & 表达式 注释 接下来让我们来看下简单的代码,该代码输出了"Hello World!": package main import "fmt" func main() { /* 这是我的

  • 问题内容: 我正在尝试学习Go并遵循现有的约定,但是,作为每个约定,您都需要先了解它们,然后才能很好地使用它们,经过一些研究,我没有找到以下问题的确切答案: 我已经在自己的内部建立了一个类似以下结构的项目: 我的主要是: 因此,问题是: 我读到我需要在每个package文件夹中都有一个文件,对吗? 如果是这样,在内部,我将如何导入,以及? 然后,是否可能会有类似的内容: …并且主要是做什么的? 问

  • 问题内容: 我正在看Go,它看起来很有前途。我试图弄清楚如何获得go结构的大小,例如 我当然知道它是24字节,但是我想以编程方式知道它。 您对如何执行此操作有任何想法吗? 问题答案: 注意: OP错误。unsafe.Sizeof确实在示例Coord3d结构上返回24。请参阅下面的评论。

  • 问题内容: 如果我要存储许多结构: 我可以用片来做,但是看起来使用更少的内存可以使用适当的set结构。 不幸的是,Go没有固定的结构。每个人都建议使用,但由于是结构,所以不起作用。有人有什么好的解决方案吗?理想情况下,无需下载库。 问题答案: 通常,设置和映射数据结构比将一组值存储在按设置的普通数组或切片中需要更多的内存,并且映射提供有效的附加功能,例如唯一性或通过键检索值。 如果要最小化内存使用

  • Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。 结构体表示一项记录,比如保存图书馆的书籍记录,每本书有以下属性: Title :标题 Author : 作者 Subject:学科 ID:书籍ID 定义结构体 结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据