Скрывая ноль значений, понимая, почему Голанг терпит неудачу здесь

Я не понимаю, как правильно убедиться, что что-то не такnil в этом случае:

package main

type shower interface {
  getWater() []shower
}

type display struct {
  SubDisplay *display
}

func (d display) getWater() []shower {
  return []shower{display{}, d.SubDisplay}
}

func main() {
  // SubDisplay will be initialized with null
  s := display{}
  // water := []shower{nil}
  water := s.getWater()
  for _, x := range water {
    if x == nil {
      panic("everything ok, nil found")
    }

    //first iteration display{} is not nil and will
    //therefore work, on the second iteration
    //x is nil, and getWater panics.
    x.getWater()
  }
}

Я нашел единственный способ проверить, действительно ли это значениеnil это с помощью отражения.

Это действительно желаемое поведение? Или я не вижу какой-то серьезной ошибки в моем коде?

Воспроизвести ссылку здесь

Ответы на вопрос(1)

Ваш ответ на вопрос