11 接口(Interface)
type Reader interface {
Read(d []byte) (int, error)
}package main
import (
"fmt"
"strconv"
)
// Stringer就是一个接口,它里面只包含了1个函数
type Stringer interface {
String() string
}
// User结构体是准备用来实现Stringer接口的
type User struct {
Name string
}
func (u *User) String() string {
return u.Name
}
// 任何类型都可以实现某个接口。
// 这里我们创建一个int类型的别名,然后用它实现Stringer接口
type MyInt int
func (mi MyInt) String() string {
return strconv.Itoa(int(mi))
}
// printTypeAndString 函数接收一个接口。
// 's' 可以是任何实现了Stringer接口的类型的值。
func printTypeAndString(s Stringer) {
fmt.Printf("%T: %s\n", s, s)
}
func main() {
u := &User{Name: "John"}
printTypeAndString(u)
n := MyInt(5)
printTypeAndString(n)
}最后更新于