Сделать что-то вроде:
if value != nil {
return *value
}
return defaultValue
... довольно громоздко для такого простого селектора. На самом деле должно быть:
value != nil ? *value : defaultValue
... или:
cond value != nil, *value, defaultValue
Это явное дизайнерское решение (для удобства чтения), что в Go нет троичных выражений.
Иногда Go заставляет вас написать еще несколько строк, но мы принимаем эту плату за ясность и удобочитаемость.
Я сейчас работаю над частью, где есть куча простых простых отображений условий. Отсутствие тернарного оператора делает его ооочень нечитаемым! Это так обидно!
Тернарный оператор делает код понятным и чистым для меня.
Вот как я сделал в Javascript:
function getLevel(level) {
- if (level <= 23100) {
- return 23100
- }
- else if (level <= 24000) {
- return 24000
- }
- else if (level <= 25200) {
- return 25200
- }
- else if (level <= 26400) {
- return 26400
- }
- else if (level <= 27600) {
- return 27600
- }
- else if (level <= 28800) {
- return 28800
- }
- else if (level <= 30300) {
- return 30300
- }
- else if (level <= 31800) {
- return 31800
- }
- else if (level <= 33300) {
- return 33300
- }
- else if (level <= 34800) {
- return 34800
- }
- else if (level <= 36300) {
- return 36300
- }
- else if (level <= 38200) {
- return 38200
- }
- else if (level <= 40100) {
- return 40100
- }
- else if (level <= 42000) {
- return 42000
- }
- else if (level <= 43900) {
- return 43900
- }
- else {
- return 45800
- }
+ return level <= 23100 ? 23100 :
+ level <= 24000 ? 24000 :
+ level <= 25200 ? 25200 :
+ level <= 26400 ? 26400 :
+ level <= 27600 ? 27600 :
+ level <= 28800 ? 28800 :
+ level <= 30300 ? 30300 :
+ level <= 31800 ? 31800 :
+ level <= 33300 ? 33300 :
+ level <= 34800 ? 34800 :
+ level <= 36300 ? 36300 :
+ level <= 38200 ? 38200 :
+ level <= 40100 ? 40100 :
+ level <= 42000 ? 42000 :
+ level <= 43900 ? 43900 : 45800
}
Самый полезный комментарий
Это явное дизайнерское решение (для удобства чтения), что в Go нет троичных выражений.
Иногда Go заставляет вас написать еще несколько строк, но мы принимаем эту плату за ясность и удобочитаемость.