Программа не компилируется из-за неиспользуемых fmt и runtime. После удаления этих импортов никакого пользовательского вывода не будет: в коде нет операций печати.
Какой результат будет выведен в консоль после выполнения программы №43
Программа не компилируется из-за неиспользуемых fmt и runtime. После удаления этих импортов никакого пользовательского вывода не будет: в коде нет операций печати.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Определите, какой текст появится в выводе консоли, когда выполнится следующая программа на Go:
import (
"fmt"
"runtime"
)
type target struct {
a int8
b int64
c int8
d int64
e int32
}
func main() {
targets := make([] target, 0, 1e7)
for i := 0 ; i < cap(targets); i++ {
targets = append(targets, target{int8(i +1), int64(i + 2), int8(i + 3,), int64(i+4), int32(i+5)})
}
doSomething(targets)
}
func doSomething(targets []target){}
Ответ
Программа не компилируется из-за неиспользуемых fmt и runtime. После удаления этих импортов никакого пользовательского вывода не будет: в коде нет операций печати.
Запятая в int8(i+3,) допустима в Go, её не следует считать главной ошибкой. На обычной amd64 структура target занимает 40 байт из-за выравнивания, массив 10 млн элементов — около 400 MB без прочих расходов. Перестановка полей может снизить размер до 24 байт. При нехватке памяти выполнение может завершиться аварийно; это не предусмотренный текстовый результат программы.