Как сравнить фрагмент структуры

# #arrays #go #struct #slice

Вопрос:

 type RecordProxy struct {  Amt int `csv:"Amt"`  Descr string `csv:"Descr"`  Date string `csv:"Date"`  ID string `csv:"ID"` }  type RecordSource struct {  Date string `csv:"Date"`  ID string `csv:"ID"`  Amount int `csv:"Amount"`  Description string `csv:"Description"` }  

у меня есть кусочек структуры []RecordProxy и []RecordSource я хочу проверить, равны ли эти 2 фрагмента структуры.

у тебя есть какие-нибудь идеи?

Комментарии:

1. Что вы пробовали? Что не сработало?

2. Два среза или их структуры никогда не будут равны с точки зрения оператора равенства == , потому что типы структур различны не только по названию, но и по структуре. Если в контексте вашей программы источник может быть равен прокси-серверу, вам придется реализовать свой собственный способ сравнения этих двух на предмет равенства.

Ответ №1:

Как комментирует @mkopriva, «вы должны реализовать свой собственный способ сравнения», т. Е. указать, какие правила в соответствии с двумя срезами можно считать равными.

Только пример:

 func CompareRecords(a []RecordProxy, b []RecordSource) bool {  lengthA, lengthB := len(a), len(b)  if lengthA != lengthB {  return false  }   for i := range a {  // define your own unequal rules:  if a[i].Amt != b[i].Amount ||  // other rules for fields of structs...  a[i].Date != b[i].Date {  return false  }  }   return true }