我对Go还是很陌生,但令我惊讶的是无法使用嵌入式接口的子类型。这是一个解释我的意思的小例子:
func test(sl bufio.ReadWriter){
// cannot use sl(type bufio.ReadWriter) as type bufio.Reader in function argument
readStuff(sl)
[...]
writeStuff(sl) // same kind of error
}
func readStuff(sl bufio.Reader){
[...]
}
由于每个接口都具有相同的内存布局,并且ReadWriter是Reader和Writer,因此我希望这段代码能够正常工作。我确实尝试使用以下方法转换接口类型:
readStuff(sl.(buffio.Reader))
但这也不起作用。所以我有两个问题:
为什么不起作用?
这个问题的发展哲学是什么?
catspeake
至尊宝的传说
相关分类