我还是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){
[...]
}
Run Code Online (Sandbox Code Playgroud)
由于每个接口都具有相同的内存布局,而ReadWriter是Reader和Writer,因此我希望此代码能够正常工作.我确实尝试将接口类型转换为:
readStuff(sl.(buffio.Reader))
Run Code Online (Sandbox Code Playgroud)
但它也不起作用.所以我有两个问题:
go ×1