go - 如何使用反射包获取chan的类型

标签 go channel reflect

假设我在Go中有一个chan:

var c = make(chan int)

如何使用以下方法发现它是一个 channel :
var isChannel = reflect.ValueOf(c).Kind() == reflect.Chan

但是没有人知道我如何确定 channel 的类型,在这种情况下为int

最佳答案

使用Elem获取 channel 类型:

var isChannel = reflect.ValueOf(c).Kind() == reflect.Chan
channelType := reflect.ValueOf(c).Type().Elem()

对于int channel ,channelType将为int

关于go - 如何使用反射包获取chan的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60241421/

相关文章:

go - 在 Go 中检测有符号整数溢出

Go Channel读写卡死循环

go - 解释方法表达式的打印值

go - 如何从结构中指定我们想要使用的字段?

postgresql - 如何在没有时区的情况下从 Postgresql 中获取时间戳值?

go - 如何使用 GORM 一次一行读取 SQLite 数据库

java - 坚持写入 JCSP channel

go - 如何解决Go channel 死锁?

go - 对字段 X 的一般属性,存在于多种类型中

pointers - Golang 通过引用结构成员值传递变量