Golang中相等的未命名类型

相等的未命名类型

  1. 具有相同元素类型和长度的Array
  2. 具有相同元素的Slice
  3. 拥有相同字段序列(字符名、类型、标签相同、顺序相同)的匿名Struct)
  4. 相同基类型的Pointer
  5. 拥有完全相同签名(参数和返回值相同,但不包括参数名)的Function
  6. 拥有相同方法集签名(函数名、参数名相同,函数排列次序无关)的Interface
  7. 拥有相同Key、Value类型的Map
  8. 拥有相同数据类型和传递方向的Channel

type 定义的新类型

这个关键字定义的基于其它类型的新类型,并不是一个别名,而是一个全新的类型。

除了底层类型拥有相同的数据结构外,并不会“继承”包括方法在内的任何信息

这与struct匿名字段嵌入完全不同

如果底层类型是命名类型,必需进行显式转换,才能将新类型对象转换为底层类型