package cards import "fmt" // карта type Card struct { N Number S Suit } // проверка, корректно ли объявлена карта func (s *Card) IsValid() bool { // масть у джокера отсутствует if s.N == Joker { return true } // для остальных карт, кроме джокера, проверяем корректно объявленные порядок и масть return s.N.IsValid() && s.S.IsValid() } // полное наименование карты func (s *Card) Name() string { return fmt.Sprintf("%s %s", s.N.Name(), s.S.Name()) } // краткое наименование карты func (s *Card) NameShort() string { // XX выводим, если карта объявлена некорректно if !s.IsValid() { return "XX" } // джокер. выводим только порядок if !s.S.IsValid() { return s.N.NameShort() } // для остальных карт кроме джокера выводим порядок и масть return fmt.Sprintf("%s%s", s.N.NameShort(), s.S.NameShort()) } // строковое представление карты func (s *Card) String() string { return s.NameShort() }