【发布时间】:2019-08-18 12:17:37
【问题描述】:
如何比较具有不同类型但基础类型相同的两个变量的值。
type SomeID uint8
type OtherID uint8
func areEqual(sid SomeID, oid OtherID) bool {
// error: mismatched types
return sid == oid
}
【问题讨论】:
-
首先将它们转换回
uint8,然后比较这些单位。 -
虽然这确实提出了为什么这些是不同类型的问题;创建基于基元的类型的目的通常是区分它们,这意味着将
SomeID与OtherID进行比较不应产生任何有意义的结果;比如比较一个time.Month和一个time.Weekday,它们都是int,但有不同的含义,因此无法比较。 -
完全正确 - 通常会向不同类型添加方法,最终定义其独特特征。
-
@Adrian 我同意,但是这是作业的一部分,所以这个问题是虚构的。