【发布时间】:2012-12-16 20:56:23
【问题描述】:
我对 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))
但它也不起作用。所以我有两个问题:
- 为什么它不起作用?
- 关于这个问题的围棋哲学是什么?
【问题讨论】:
标签: go