gpt4 book ai didi

concurrency - 为什么我不能在函数参数中使用 type []chan *Message as type []chan interface{}?

转载 作者:IT王子 更新时间:2023-10-29 01:43:22 27 4
gpt4 key购买 nike

这是我收到的错误消息:

cannot use c.ReceiverChans (type []chan *Message) as type []chan interface {} in function argument

最佳答案

类型不同。 *Message 实现空接口(interface),但这并不意味着您可以获取 *Message 的 slice 或 chan 并将其传递给需要 slice 或 chan 的对象接口(interface)。

我将接口(interface)视为特定数据结构的方式;一对指向值的指针和指向基础类型的指针。这不完全是接口(interface)的工作方式,但它有助于我的直觉。使用这种直觉,如果我将一个 int 传递给一个需要 interface{} 的函数,我想象我的值在函数被调用之前被编译器隐式包装在这个接口(interface)对中。相反,如果该函数需要一个 []interface{},而我想传递一个 []int,那么编译器可以做什么?它必须构建一个新的接口(interface)对数组,但是 (a) 这会很昂贵,并且 (b) 它不会真正起作用,因为如果 slice 被排序,原始 slice 将被保留一个人。

这是 golang FAQ 中的问题:http://golang.org/doc/faq#convert_slice_of_interface

这是来自 go wiki 的关于接口(interface) slice 的更详细的解释,比我刚才解释的更好。 https://code.google.com/p/go-wiki/wiki/InterfaceSlice

关于concurrency - 为什么我不能在函数参数中使用 type []chan *Message as type []chan interface{}?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18810267/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com