ошибка при построении, получение: "подозреваемый или" - PullRequest
0 голосов
/ 19 июня 2020

Я столкнулся с проблемой сборки с go. Мне интересно, ошибка ли это в компиляторе или проблема с кодом.

// removed the error handling for sake of clarity 

file, _ := c.FormFile("file")
openedFile, _ := file.Open()
buffer := make([]byte, 512)
n, _ := openedFile.Read(buffer)

contentType := http.DetectContentType(buffer[:n])

// doesn't work

if contentType != "image/jpeg"  || contentType != "image/png" {
  return 
}

// works 

if contentType != "image/jpeg" {
    return
}
else if contentType != "image/png" {
    return
}

error suspect or: contentType != "image/jpeg" || contentType != "image/png"

fyi "c .FormFile (" file ")" является формой Gin goni c. но на самом деле это не имеет значения.

1 Ответ

4 голосов
/ 19 июня 2020

То, что вы видите, является предупреждением компилятора, но приложение будет запущено.

Ваше состояние всегда true:

contentType != "image/jpeg"  || contentType != "image/png" 

Вы сравниваете переменную string с двумя разными string значения, поэтому одно из них обязательно будет true, а true || false всегда будет true.

Скорее всего вам понадобится логическое И: я предполагаю, вы хотите проверить, является ли тип содержимого ни JPEG, ни PNG:

if contentType != "image/jpeg" && contentType != "image/png" {
    return 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...