Должен ли он возвращать функцию?
да, это часть подписи autocert.Manager struct.
Поле Manager.HostPolicy имеет тип autocert.HostPolicy , которое действительно является функцией типа func(ctx context.Context, host string) error
.
Как будет выглядеть каркасная структура для пользовательской реализации hostPolicy?
Вы просто устанавливаете пользовательскую функцию для поля HostPolicy, чтобы реализовать логику для запроса к базе данных.
m := autocert.Manager{
// ... more fields here
HostPolicy: func(ctx context.Context, host string) error{
// implement database calls here
return nil
},
}
Согласно документу, вы должны вернуть ошибку, чтобы отклонить хост.