awesome-patterns/playground/benchmark/main.go
2020-05-27 21:52:05 +08:00

47 lines
697 B
Go

package main
import (
"fmt"
"time"
)
type Human interface {
Speak()
}
type Australia struct {
}
func (h *Australia) Speak() {
fmt.Println("I am Australia")
}
func InterfacePresentation(vs ...interface{}) {
t := time.Now()
for _, v := range vs {
b := time.Since(t)
fmt.Println("Before Checking", b)
m, ok := interface{}(v).(Human)
a := time.Since(t)
fmt.Println("After Checking", a)
if ok {
m.Speak()
}
}
}
func Presentation(human ...Human) {
for _, h := range human {
h.Speak()
}
}
func main() {
var persons []interface{} = make([]interface{}, 100)
for i := 0; i <= 100; i++ {
persons = append(persons, &Australia{})
}
InterfacePresentation(persons...)
}