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

将通道嵌入结构

罗学林
2023-03-14
问题内容

如何在Go的结构中嵌入频道?

为什么映射语法之间不一致:

var m map[string]int

和渠道,

var m chan int

为了明确起见,在Go中可以将一个类型嵌入另一个类型。嵌入类型可以访问在嵌入类型上定义的所有方法,但是也可以通过其类型名称显式引用嵌入类型。因此,映射类型声明和通道类型声明之间的不一致会使想要引用嵌入式通道类型的人感到困惑。


问题答案:

问题在于, 嵌入
主要使您可以从嵌入类型的方法中受益(如“ 在Go中嵌入而不是继承
”中所述)

channel一样map,是
未命名的类型 (使用类型文字指定,该类型文字会从现有类型组成新的类型。)。
它没有自己的方法,也没有导出的字段,因此将channel类型嵌入到中不会很费劲struct {}

您可能会收到与本示例中的错误消息类似的错误消息

func (x chan int) m2() {}
invalid receiver type chan int (chan int is an unnamed type)

如果将channel类型嵌入有效的类型中struct,则该未命名的类型将能够充当method的接收者,这似乎并不是该语言最初所允许的。



 类似资料:
  • lng、lat COORD呈现到iframe fine下的页面 我想这可能很容易做到,但似乎不能将它们嵌入到URL中。TIA

  • 6.3. 通过嵌入结构体来扩展类型 来看看ColoredPoint这个类型: gopl.io/ch6/coloredpoint import "image/color" type Point struct{ X, Y float64 } type ColoredPoint struct { Point Color color.RGBA } 我们完全可以将ColoredPoin

  • 问题内容: 是否可以在不使用嵌入式结构的情况下继承类型的方法? 代码的第一个片段是将结构嵌入其中的工作代码,我可以在上调用该方法。我不喜欢的是,当我初始化时,我有(?)来初始化其中的结构。有没有解决的办法? 最终,我想做以下事情。where 是类型和初始化位置,也不需要初始化结构。以下代码不起作用,但可能清楚我的目标是什么。 我将添加更多使用的方法的结构,这就是我要问的原因。如果只拥有,我将拥有可

  • 前面两节里我们用到的输入和输出都是二维数组,但真实数据的维度经常更高。例如,彩色图像在高和宽2个维度外还有RGB(红、绿、蓝)3个颜色通道。假设彩色图像的高和宽分别是$h$和$w$(像素),那么它可以表示为一个$3\times h\times w$的多维数组。我们将大小为3的这一维称为通道(channel)维。本节我们将介绍含多个输入通道或多个输出通道的卷积核。 多输入通道 当输入数据含多个通道时

  • 我目前正在尝试从一个线程操作一个SocketChannel(我以前用两个线程和常规套接字实现了我想要做的事情,但每个客户端两个线程似乎有点过分)。我希望能够在有数据要读取时读取(选择器可以很好地工作)。我只想在阻塞队列(在我的示例中,我有帧队列)中有项目时写入。 现在,它做的是,它不停地疯狂地循环,这显然很糟糕。我正在寻找一种方法,当我的阻塞队列中有一个项目,或者有字节要读取时,我可以唤醒选择器。

  • 问题内容: 我有以下几种类型: 我可以使用use ,但是我 不能 使用 似乎可以嵌入语法,但是使用它无效吗? 问题答案: 嵌入式类型是(未命名的)字段,由不合格的类型名称引用。 规格:结构类型: 使用类型但没有显式字段名称声明的字段是 匿名字段 ,也称为 嵌入式 字段或该类型在结构中的嵌入。必须将嵌入式类型指定为类型名称或指向非接口类型名称的指针,并且本身不能为指针类型。 非限定类型名称充当字段名