test_interface.go.src 720 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package main
  2. import (
  3. "fmt"
  4. "net/http"
  5. "reflect"
  6. )
  7. type IBase interface {
  8. GetMeta() map[string]http.Handler
  9. }
  10. type IUserService interface {
  11. IBase
  12. Login(username string, password string) (bool, error)
  13. }
  14. type UserService struct {
  15. }
  16. func (userSrv *UserService) Login(username, password string) (bool, error) {
  17. return true, nil
  18. }
  19. func (userSrv *UserService) GetMeta() map[string]http.Handler {
  20. return map[string]http.Handler{}
  21. }
  22. func TestSrv(srv IBase) {
  23. fmt.Println(srv.GetMeta())
  24. }
  25. func main() {
  26. userSrv := &UserService{}
  27. TestSrv(userSrv)
  28. fmt.Println(reflect.TypeOf(userSrv.Login))
  29. tf(userSrv.Login)
  30. }
  31. func tf(f interface{}) {
  32. fc := reflect.ValueOf(f)
  33. fc.Call([]reflect.Value{"silenceqi", "sss"})
  34. }