-1 polymorphism struct interface go
我不明白为什么下面的代码不能编译。
我很困惑为什么 Go 说HistoryReader没有正确实现IReader。HistoryBook实现IBook. 当尝试将 a 添加到 s 的切片时,为什么Read(book Ibook)和不能同时接受?Read(book HistoryBook)HistoryReaderIReader
package main
type IReader interface {
Read(book IBook)
}
// HistoryReader implements IReader
type HistoryReader struct{}
func (r *HistoryReader) Read(book HistoryBook) {
// ...
}
type IBook interface{}
// HistoryBook implements IBook
type HistoryBook struct{}
func main() {
var readerSlice []IReader
_ = append(readerSlice, &HistoryReader{})
}
Run Code Online (Sandbox Code Playgroud)
package main
type IReader interface {
Read(book IBook)
}
// HistoryReader implements IReader
type HistoryReader struct{}
func (r *HistoryReader) Read(book HistoryBook) {
// ...
}
type IBook interface{}
// HistoryBook implements IBook
type HistoryBook struct{}
func main() {
var readerSlice []IReader
_ = append(readerSlice, &HistoryReader{})
}
Run Code Online (Sandbox Code Playgroud)
IReader要求Read需要任何IBook.
但HistoryReader.Read只接受一个HistoryBook,不接受任何IBook。因此,HistoryReader不满足IReader.
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |