Какой вывод получит программа №33

Исходник не компилируется: example1 не определена, а -- не является бинарным сравнением. Если заменить имя на example и оператор на ==, вывод будет <nil>, <nil>, false.

Короткий ответ

Что ответить на собеседовании

Исходник не компилируется: example1 не определена, а -- не является бинарным сравнением. Если заменить имя на example и оператор на ==, вывод будет , , false.

Подробный разбор

Ответ с пояснениями

Условие

Определите, что будет выведено в консоль при выполнении следующей программы на Go.

import (
        "fmt"
        )

type  Example struct {

}
type MyInterface interface{}

func example() MyInterface {
    var e *Example
    return e
}

func example2 () MyInterface {
    return nil
}

func main () {
    fmt.Println(example1())
    fmt.Println(example2())
    fmt.Println(example1() -- example2())        
            
    
}

Ответ

Исходник не компилируется: example1 не определена, а -- не является бинарным сравнением. Если заменить имя на example и оператор на ==, вывод будет , , false.

example возвращает интерфейс с динамическим типом *Example и nil-указателем внутри. example2 возвращает пустой nil-интерфейс. fmt отображает оба как , но при сравнении они различаются по динамическому типу. Для успеха без ошибки или отсутствующего значения возвращайте явный nil интерфейса, если именно это требуется контрактом.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее