
336 Rozdział 11.
Nieudane asercje typów
Wydaje się, że wszystko działa świetnie — przynajmniej dla wartości typu
TapeRecorder
. Co się jednak stanie, jeśli spróbujesz przekazać do funkcji
TryOut
wartość typu
TapePlayer
? Jak dobrze będzie działać to rozwiązanie,
jeśli wziąć pod uwagę, że używasz asercji typu z twierdzeniem, iż parametr
funkcji
TryOut
jest w rzeczywistości typu
TapeRecorder
?
Kod kompiluje się, ale przy próbie uruchomienia
go następuje panika. Zgodnie z oczekiwaniami
próba stwierdzenia, że wartość typu
TapePlayer
jest wartością typu
TapeRecorder
, nie kończy
się dobrze. To stwierdzenie nie jest przecież
prawdziwe.
type Player interface ...