简单接口
package main
import (
"fmt"
)
type TEST interface {
fgo()
}
type M struct{}
func (M) fgo() {
fmt.Printf("this is interface\n")
}
func main() {
var m M
var tt TEST = m
tt.fgo()
}
//打印结果
this is interface
嵌套接口
package main
import (
"fmt"
)
type TEST interface {
fgo()
}
type TEST2 interface {
TEST
fgo2() M
}
type M struct {
id int
}
func (m M) fgo() {
fmt.Printf("this is interface\n")
}
func (m M) fgo2() M {
fmt.Printf("this is interface--2\n")
return m
}
func main() {
var m M
m.id = 1
var tt TEST2 = m
tt.fgo()
fmt.Println(m.fgo2().id)
}
//打印结果
this is interface
this is interface--2
1
匿名接口
package main
import (
"fmt"
)
type data struct{}
func (data) func1() string {
return "func1 running"
}
type Node struct {
data interface {
func1() string
}
}
func main() {
var t interface {
func1() string
} = data{}
var n Node = Node{data: t}
fmt.Println(n.data.func1())
}
//打印结果
func1 running