Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
6
Отложенный вызов defer: различия между передачей значений и указателей
Условие задачи
Необходимо понять, какие данные будет выводить программа, если использовать оператор defer для функций, которые принимают как обычные значения, так и указатели.
func main() {
fmt.Println(test1())
test3()
}
func test3() {
var a int = 10
var b = 20
var ptr *int = &b
defer printInt("a", a)
defer printInt("ptr as value", *ptr)
defer printIntPointer("ptr as pointer", ptr)
a = 1010
*ptr = 2020
}
func changeI(i *int) {
*i = 10
}
func printInt(label string, v int) {
fmt.Printf("%s=%d\n", label, v)
}
func printIntPointer(label string, p *int) {
fmt.Printf("%s=%d\n", label, *p)
}