# #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 }