GO 对于 “对象”的解释
一:在Go语言中,你可以给任意类型 ,添加相应的方法,
type Integer int
func (a Integer) Less(b Integer) bool {
return a < b
}
在这个例子中,我们定义了一个新类型Integer,它和int没有本质不同,只是它为内置的 int类型增加了个新方法Less()。
这样实现了Integer后,就可以让整型像一个普通的类一样使用:
func main() {
var a Integer = 1
if a.Less(2) {
fmt.Println(a, "Less 2")
}
}
GO 对于 “接口”继承的解释
二:在Go语言中,只需要实现了接口要求的所有函数,我们就说实现了该接口。
type IFile interface {
Read(buf [] byte) (n int, err error)
Write(buf [] byte) (n int, err error)
Seek(off int64, whence int) (pos int64, err error)
Close() error
}
type IReader interface {
Read(buf []byte) (n int, err error)
}
type IWriter interface{
Write(buf []byte) (n int, err error)
}
type ICloser interface {
Close() error
}
type File struct {
// ...
}
func (f File) Read(buf []byte) (n int, err error)
func (f File) Write(buf []byte) (n int, err error)
func (f File) Seek(off int64, whence int) (pos int64, err error)
func (f File) Close() error
尽管File类并没有从这些接口继承,甚至可以不知道这些接口的存在,但是File类实现了 这些接口,可以进行赋值:
var file1 IFile = new(File)
var file2 IReader = new(File)
var file3 IWriter = new(File)
var file4 ICloser = new(File)
接口赋值
1.将对象实例赋值给接口;
2.将一个接口赋值给另一个接口。
有疑问加站长微信联系(非本文作者)