Advertisement
Guest User

Untitled

a guest
Jan 5th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.67 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "reflect"
  6. )
  7.  
  8. type User struct {
  9. Username string
  10. Password string
  11. }
  12.  
  13. type Person struct {
  14. Username string
  15. Password string
  16. }
  17.  
  18. func main() {
  19. p1 := &User{Username: "rodrigo", Password: "pass"}
  20. p2 := &Person{Username: "asdasd", Password: "pass"}
  21.  
  22. fmt.Println(EqualStruct(p1, p2))
  23.  
  24. }
  25.  
  26. func EqualStruct(x, y interface{}) bool {
  27. if x == nil || y == nil {
  28. return x == y
  29. }
  30. v1 := reflect.Indirect(reflect.ValueOf(x))
  31. v2 := reflect.Indirect(reflect.ValueOf(y))
  32.  
  33. if v1.NumField() != v2.NumField() {
  34. return false
  35. }
  36.  
  37. for i := 0; i < v1.NumField(); i++ {
  38. if v1.Type().Field(i).Name != v1.Type().Field(i).Name {
  39. return false
  40. }
  41. }
  42.  
  43. return true
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement