package main
import (
"fmt"
)
type BinaryTree interface {
Set(value interface{})
getLeft() BinaryTree
getRight() BinaryTree
Value() interface{}
}
type Test interface {
BinaryTree
}
type IntBinaryTree struct {
value int
left Test
right Test
}
func (a *IntBinaryTree) Set(value interface{}) {
a.value = value.(int)
}
func (a *IntBinaryTree) getLeft() BinaryTree {
return a.left
}
例:func (a *IntBinaryTree) getRight() IntBinaryTree {
return a.right
}
而不是接口中声明的类型,编译是通不过的 严格的返回接口中的定义的类型,
而不能是实现返回接口的具体类型()
func (a *IntBinaryTree) Value() interface{} {
return a.value
}
func main() {
var a BinaryTree = &IntBinaryTree{}
var b Test = &IntBinaryTree{}
a.Set(19)
b = a.(Test)
fmt.Println(a.Value())
fmt.Println(b.Value())
}