Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
11
Определение вывода программы при работе с nil‑интерфейсом и nil‑указателем
Условие задачи
Необходимо предсказать, какой текст будет выведен при выполнении программы, учитывая особенности сравнения интерфейсов с nil в Go.
type 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")
}
}