53 lines
722 B
Go
53 lines
722 B
Go
package main
|
|
|
|
import "fmt"
|
|
|
|
// 接口定义设计规范
|
|
type SayHello interface {
|
|
SayHello()
|
|
}
|
|
type American struct {
|
|
Name string
|
|
}
|
|
|
|
func (person American) SayHello() {
|
|
fmt.Println("你好")
|
|
}
|
|
|
|
type chinese struct {
|
|
Name string
|
|
}
|
|
|
|
func (person chinese) SayHello() {
|
|
fmt.Println("chinese")
|
|
}
|
|
func (person chinese) tiaowu() {
|
|
fmt.Println("跳舞")
|
|
}
|
|
|
|
// 定义函数:接收接口的实例
|
|
func greet(s SayHello) {
|
|
s.SayHello()
|
|
|
|
//断言控制语句的要求 判断这是chinese
|
|
ch, flag := s.(chinese)
|
|
if flag == true {
|
|
|
|
ch.tiaowu()
|
|
} else {
|
|
fmt.Println("no")
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
var a [3]SayHello
|
|
a[0] = chinese{"1"}
|
|
a[1] = American{"hel"}
|
|
a[0].SayHello()
|
|
|
|
c := chinese{}
|
|
c.tiaowu()
|
|
c.SayHello()
|
|
|
|
}
|