面向对象不同对Go多态的影响
面向对象的不同 不能影响到GO多态的使用
空接口和断言
空接口可以表示任何类型
通过断言来将空接口转换为制定类型,断言模式就是强制类型转换
package empty_interface_test
import (
"fmt"
"testing"
)
func DoSomething(p interface{}){
switch v:=p.(type) {
case int:
fmt.Println("Integer",v)
case string:
fmt.Println("String",v)
default:
fmt.Println("Unknow Type")
}
}
func TestEmptyINterfaceAssertion(t *testing.T){
DoSomething(10)
DoSomething("string")
}
GO接口最佳实践
type Reader interface {
Read(p []byte)(n int,err error)
}
type Writer interface {
Write(p []byte)(n int,err error)
}
type ReadWriter interface {
Reader
Writer
}
func StoreData( reader Reader) error {
}