Golang中如何编写可接收任意类型通道的函数
Golang中如何编写可接收任意类型通道的函数 我想写一个函数,它可以接收任意类型的通道作为参数, (例如:chan int、chan chan int、chan myType …),
ch := make(chan int, 1)
ch2:= make(chan chan int, 2)
fn(ch)
fn(ch2)
有什么办法吗?
7 回复
我认为针对上述问题找到了一个解决方案。
func fn[T any | chan T | <-chan T | chan<- T](o T)
- 抱歉回复晚了。在我的情况中,
fn无法将chan<- T或<-chan T当作chan T来处理。
你好,
你需要的是一个带有类型参数的函数:
func [T any](c chan T)() {}
这个函数使用了一个类型参数 T,它可以被任何类型替换。函数参数 c 是一个类型为 T 的通道,这可以匹配任何通道类型。
感谢分享你的解决方案。
我不确定为什么这是必要的。类型参数 T any 可以被任何通道类型满足。一个 [T any] 的单一类型参数应该就足够了,还是我漏掉了什么?
嗨,@christophberger。感谢你的帮助,这对我帮助很大。 今天,我遇到了一个更高级的问题,我们有什么方法可以让它支持任意方向的通道吗?我尝试了以下方法,但似乎不起作用。
func fn[T any, C chan T | <-chan T | chan<- T](o C)


