В Go switch по умолчанию не проваливается в следующий case (не нужен break). Можно писать switch без выражения (как цепочка if-else), switch true для условий. fallthrough принудительно переходит в следующий case. Типы в case должны совпадать с типом выражения (или быть интерфейсами).