Используйте pq.Array при сканировании массива:
err = rows.Scan(&d.deviceID, &d.name, pq.Array(&d.tags), &d.macAddress, &d.agentID, &d.groupType)
if err != nil {
return nil, err
}
Ключевой вопрос: имеет смысл больше чем для одного приложения использовать тип? Если так, это должно быть в библиотеке классов. В противном случае можно все еще хотеть поместить его в библиотеку классов только ради разделения (например, иметь один блок на уровень в n-tier решении), но Вы могли просто поместить его в свое приложение.
Если Ваша санитизация общего назначения, то помещение ее в библиотеке классов определенно было бы правильным перемещением.
Я знаю о людях, которые не пишут почти кода в исполняемых приложениях и помещают почти все в библиотеки классов - таким образом, приложение в основном просто переносит библиотеки классов. Я не склонен идти вполне что далеко сам...
Пользование библиотеками полезно, когда Вы хотите совместно использовать код между несколькими программами.
Если Вы думаете, что Вам будут нужны Ваши классы для очистки данных больше чем в одной программе, это - хорошая идея поместить их в библиотеку.
Это - также хорошая идея поместить слои Вашего приложения в различных библиотеках (проверьте n-tier архитектуру),
Первая мысль, которая приходит на ум, является удобством использования ре. Это санирует библиотеку использоваться когда-нибудь за пределами приложения, Вы в настоящее время продолжаете работать? Если Вы, то Вы не хотите должными быть ссылаться на exe в будущем, для этого Вы хотите создать файл DLL (возможно даже строгое имя оно и GAC оно) и затем просто ссылка это в будущем.
если Вы снова использовали бы этот код в различных приложениях - т.е.: это было бы своего рода общей библиотекой - затем компилируют его как dll
производительность reg, отметьте любой код, который выполнен против внешнего, собираются, всегда было бы немного медленнее, чем выполнение кода в рамках того же блока
Дополнительные блоки будут добавлять небольшое время загрузки и память наверху, но иначе не иметь никаких последствий производительности.
Безопасность будет только иметь значение, если Вы будете нуждаться в другой безопасности доступа к коду (CAS) и используете CAS.
Обычно существует три причины:
Это делает вещи более простыми. Помещение всего в единственном блоке становится громоздким (это могло включать организационные проблемы / проблемы команды).
Повторное использование.
Вы должны разделить блоки. Например, иметь интерфейсы и реализацию в различных блоках, чтобы позволить AppDomains, который будет разгружен (например, для плагинов).
Я думаю, что самый легкий путь состоит в том, чтобы добавить проект SanitizeLibrary как проект Класса Библиотеки к Вашему решению и сослаться на этот проект в Вашем приложении. Если Вы находите это полезным, что можно затем извлечь библиотеку из текущего проекта и сослаться на него как dll в других проектах.