Значение nil
не является допустимым значением для string
.Если вы хотите выполнить откат к заголовку как для пропущенных, так и для пустых значений, используйте следующий код:
params := r.URL.Query()
tok := params.Get("x-huru-api-token")
if tok == "" {
tok = r.Header.Get("x-huru-api-token")
}
Если вы хотите откатиться к заголовку только при отсутствии параметра запроса, используйте командуследующее:
params := r.URL.Query()
var tok string
if values, ok := params["x-huru-api-token"]; ok && len(values) > 0 {
tok = values[0] // note that tok can be the empty string ""
} else {
tok = r.Header.Get("x-huru-api-token")
}
Обратите внимание на одно различие между кодом в этом ответе и вопросом.Этот ответ использует присваивание, чтобы установить tok
внутри оператора if.Код в вопросе использует краткое объявление переменной.Краткое объявление переменной не будет скомпилировано, поскольку вновь объявленная переменная внутри оператора if не используется.