Рекомендуемый способ сделать геттеры и сеттеры - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть проект, который будет написан на go, и он будет иметь более 30 полей в структуре, которые необходимо будет проверить, прежде чем значение будет разрешено устанавливать.

В python я, вероятно, использовал бы дескрипторы или, по крайней мере, свойства, чтобы сделать это, чтобы предотвратить как можно больше котельной плиты.

Мой вопрос: каков вообще лучший способ сделать это на ходу?Является ли общепринятым просто иметь строковые переменные внутри структуры и иметь функции get и set для каждого свойства, или есть лучший способ сделать это для предотвращения кода котельной пластины?

1 Ответ

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

Из документов go :

Go не обеспечивает автоматическую поддержку геттеров и сеттеров.Нет ничего плохого в том, чтобы самим получать геттеры и сеттеры, и часто это уместно, но не стоит идиоматично и не обязательно вставлять Get в имя геттера.Если у вас есть поле с именем owner (в нижнем регистре, не экспортировано), метод getter должен называться Owner (в верхнем регистре, экспортируется), а не GetOwner.Использование имен в верхнем регистре для экспорта предоставляет возможность отличить поле от метода.Функция установки, если необходимо, скорее всего, будет называться SetOwner.Оба названия хорошо читаются на практике:

owner := obj.Owner()
if owner != user {
    obj.SetOwner(user)
}
...