Назад к задачам
Junior — Senior
14

Поведение интерфейса, содержащего nil‑указатель

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Нужно понять, какой результат выведет следующая программа.

type I interface {
  Foo()
}

type S struct{}

func (s *S) Foo() {
  fmt.Println("foo")
}

func Build() I {
  var res *S
  return res
}

func main() {
  i := Build()
  if i != nil {
    i.Foo()
  } else {
    fmt.Println("nil")
  }
}