这是一个Go语法问题,似乎是一个愚蠢的问题,但我一直在检查Go语言规范,以找到一些官方单词或定义来定义什么类型是xxx类型,例如,什么类型是接口类型?
举个例子,我看到这样的词:
的方法集(接口类型为)是它的接口。
或
嵌入字段必须指定为类型名称T或指向非接口类型名称*T的指针,而且T本身可能不是指针类型。
或
假设是一个结构类型的T,有两种方法.
type T struct {
a int
}
....像struct {...}这样的类型文字是一个结构类型,那么type A struct {...}中的A和type B interface{...}中的B呢?A是结构类型,B是接口类型吗?
是的,从上面对struct类型T的示例中,我可以看出,给定类型是struct类型或接口类型的定义类型(通过“类型”声明)也是结构类型或接口类型。所以A是一种结构类型,B也是一种接口类型。但这条规则的官方定义在哪里呢?
对于定义的类型,我只能找到与类型类别相关的以下内容:
类型定义创建与给定类型相同的基础类型和操作的新的、不同的类型,并将标识符绑定到它。
因此,我的理解是,定义的类型与给定类型是一个新的、不同的类型,但它们属于相同的类型类别,例如,接口类型或结构类型。然而,并没有这样的定义。
发布于 2019-08-22 17:02:53
接口类型是由interface关键字引入的类型,或者是type name interface定义的此类类型的名称(当然,还要加上该接口的实际需求)。
任何类型,无论它是否接口类型,都实现一个接口类型,如果它有一组适当的命名方法。也就是说,struct类型可能足以与某些接口类型一起使用。即使是非struct类型也可能足够:
type foo int
func (receiver_arg foo) method1() { ... }类型名称foo现在实现了任何需要名为method1的方法的接口(当然,它实现了其他所需的方法)。
..。通过
type关键字定义的类型是一个与给定类型不同的新类型,但它们属于同一类型类别.
是的,就是这样。使用reflect,您会发现它们具有相同的Kind。类这个词不在规范中,但它非常有用,这里的链接列举了Go中的所有基本类型。
https://stackoverflow.com/questions/57613572
复制相似问题