Versteckt keine Werte und versteht, warum Golang hier versagt

Ich verstehe nicht, wie ich richtig sicherstellen kann, dass etwas nicht @ inil in diesem Fall

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()
  }
}

Der einzige Weg, den ich gefunden habe, um zu überprüfen, ob dieser Wert tatsächlich @ inil verwendet Reflektion.

Ist das wirklich gewolltes Verhalten? Oder sehe ich keinen größeren Fehler in meinem Code?

Link hier spielen

Antworten auf die Frage(4)

Ihre Antwort auf die Frage