golang тернарный оператор

Пользователь

от anastacio.hane , в категории: Общие вопросы , 4 года назад

Ребят, можно ли в Golang’е использовать тернарный оператор? Существует ли он вообще в этом языке программирования? Помогите пожалуйста, я сам так и не смог найти инфу по этой теме…


Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

5 ответов

Пользователь

от tessie_jacobs , 4 года назад

Тернарный оператор (от латинского слова ternarius — тройной)- это оператор, состоящий из двух символов ? и :, который формирует условную тернарную операцию, возвращающую свой второй или третий операнд в зависимости от выполнения или невыполнения определённого условия, или другими словами от результата логического выражения.


Пользователь

от newell , 4 года назад

В Go нет тернарной операции тестирования. Вы можете использовать следующее для достижения того же результата:

1
2
3
4
5
if expr {
   n = trueVal
} else {
   n = falseVal
}

Пользователь

от newell , 4 года назад

Причина, по которой ?: (тернарный оператор) отсутствует в Go, заключается в том, что разработчики языка видели, что операция использовалась слишком часто, чтобы создавать излишне сложные выражения. Форма if-else, хотя и дольше, но, несомненно, яснее. Языку нужна только одна условная конструкция потока управления.


Пользователь

от bailee , 4 года назад

Трудно поверить, но в Golang не предусмотрен тернарный оператор! Т.е. нельзя написать такую простую и лаконичную конструкцию:

 

1
var res = val > 0 ? "positive" : "negative"

Copy

Однако, можно реализовать свою функцию для синтаксического сахара:

1
2
3
4
5
6
7
func Ternary(statement bool, a, b interface{}) interface{} {
   if statement {
       return a
   }
   return b
}
var res = Ternary(val > 0, "positive", "negative")


Пользователь

от anastacio.hane , 4 года назад

А я-то думаю, почему я так и не смог найти информацию по использованию тернарного оператора в Go – его попросту не существует в этом языке программирования. Спасибо за помощь.