Может ли одно дело повлечь за собой исполнение нескольких дел? - PullRequest
0 голосов
/ 02 августа 2020

Я хочу выполнить case 'b' и case 'c' для case 'a':

foo := 'a'
switch foo {
case 'a':
    // execute both case 'b' and case 'c'
case 'b':
    // only execute case 'b'
case 'c':
    // only execute case 'c'
}

Я попытался выполнить case 'a' в case 'b', а затем - через case 'b' в case 'c' if foo == 'a', однако условные операторы перехода не разрешены, и они будут вызывать ошибку "fallthrough statement out of place".

Эту проблему можно решить, скопировав код из обоих вариантов 'b' и case 'c' в case 'a', а также может быть решен с помощью других методов условного ветвления помимо операторов switch, однако мне интересно, есть ли решение этой проблемы с использованием операторов switch и без копирования кода между вариантами для достижения аналогичный результат.

1 Ответ

2 голосов
/ 02 августа 2020

Пара вариантов:

if foo == 'a' || foo == 'b' {
    // case 'b'
}
if foo == 'a' || foo == 'c' {
    // case 'c'
}
switch foo {
case 'a':
    b()
    c()
case 'b':
    b()
case 'c':
    c()
}

func b() { /* ... */ }
func c() { /* ... */ }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...