Type switch - конструкция switch v := x.(type) { case int: ... case string: ... }. Она позволяет выполнять разный код в зависимости от конкретного типа значения, хранящегося в интерфейсе. Переменная v в каждой ветке имеет соответствующий тип. Удобнее цепочки if с type assertion.
switch v := x.(type) {
case int:
fmt.Println(v * 2)
case string:
fmt.Println(len(v))
default:
fmt.Printf("%T", v)
}