本文始发于个人公众号:TechFlow,原创不易,求个关注
今天是golang专题的第12篇文章,我们来继续聊聊interface的使用。
在上一篇文章当中我们介绍了面向对象的一些基本概念,以及golang当中interface和多态的实现方法。今天我们继续来介绍interface当中其他的一些方法。
万能类型interface
在Java以及其他语言当中接口是一种写法规范,而在golang当中,interface其实也是一种值,它可以像是值一样传递。并且在它的底层,它其实是一个值和类型的元组。
这里我们来看下golang官方文档当中的一个例子:
package main
import (
"fmt"
"math"
)
type I interface {
M()
}
type T struct {
S string
}
func (t *T) M() {
fmt.Println(t.S)
}
type F float64
func (f F) M() {
fmt.Println(f)
}
func main() {
var i I
i = &T{
"Hello"}
describe(i)
i.M()
i