Эйч
Эйч
  • Все менторы
Задачи/Go-разработчик/Проверка интерфейса на nil и поведение при возврате nil-указателя

Проверка интерфейса на nil и поведение при возврате nil-указателя

Условие задачи

Нужно определить, какой именно вывод произойдёт при выполнении программы, учитывая особенности работы интерфейсов

gotype Order interface {
  GetID() int
}

type orderStruct struct {
  ID int
}

func (o *orderStruct) GetID() int {
  return o.ID
}

func createOrder(shouldCreate bool) Order {
  var order *orderStruct
  fmt.Println("in createOrder: ", order == nil)

  if shouldCreate {
    order = &orderStruct{ID: 1}
  }
  return order
}

func main() {
  order1 := createOrder(true)
  if order1 != nil {
    fmt.Printf("Order1 has ID: %d\n", order1.GetID())
  } else {
    fmt.Println("Order1 is nil")
  }

  order2 := createOrder(false)
  if order2 != nil {
    fmt.Printf("Order2 has ID: %d\n", order2.GetID())
  } else {
    fmt.Println("Order2 is nil")
  }
}

Профессия

Go-разработчик

Сопроводим до оффера

Умножим шансы на каждом этапе поиска и поможем получить выгодный оффер

Узнать больше

Сервис развития карьеры

Контактыteam@h.careers@hcareers
TelegramVKYouTubeLinkedIn
Профессии
Компания
С чем помогаемОтзывыВопросы и ответыСертификатыВебинарыСтать ментором

Платформа принадлежит ООО "Эйч Карьера"
ИНН 9710095807 ОГРН 1227700077340
Адрес: 127006, город Москва, Старопименовский пер, д. 18 стр. 2, помещ./ком./этаж I/19/2

Copyright © 2020-2025 Сервис развития карьеры Эйч. Все права защищены.

Политика конфиденциальностиПользовательское соглашениеОферта