Что выведет код Junior Структуры, методы и интерфейсы обновлено

Что выведет Go: сравнение структур и указателей

Вопрос

Что выведет программа? Go 1.23, в go.mod указано go 1.23.

package main

import "fmt"

type Point struct{ X, Y int }

func main() {
    a := Point{1, 2}
    b := Point{1, 2}
    pa, pb := &a, &b
    fmt.Println(a == b, pa == pb, *pa == *pb)
}

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: true false true. Структуры из сравнимых полей сравниваются поэлементно: true.

Что выведет

true false true

Разбор

Структуры из сравнимых полей сравниваются поэлементно: true. Указатели сравниваются по адресу, а это разные переменные: false. Разыменованные значения равны.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.