Сравнение структурных полей с использованием отражения - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь обновить структуру для использования в PUT API.Мне нужно выяснить, имеет ли поле в новой структуре значение, отличное от того же поля в старой структуре.Я никогда не использовал отражение раньше, поэтому я немного смущен.Вот код, который я имею, я ожидал, что он будет печатать только поля, которые отличаются, но он печатает каждое поле.поэтому они не равны, но я не могу понять, как на самом деле делать то, что мне нужно.

1 Ответ

0 голосов
/ 13 декабря 2018

Имейте в виду разницу между значениями вашего отражения и значениями полей базовой структуры.Эта строка:

v2.Field(i) != v1.Field(i)

Сравнивает отраженное поле одной структуры с отраженным полем другой. Не поле значения , а отражение самих полей .Чтобы получить значения, вам нужно будет использовать Field(i).Interface(), который будет возвращать значение поля как interface{}.

Рабочий пример можно посмотреть здесь: https://play.golang.org/p/0tAkjGTpCeu

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...