2201

#golang

What will be printed?

package main

import (
  "fmt"
)

func main() {
  foo := 1
  defer fmt.Println(foo)
  Up(&foo)
  defer fmt.Println(foo)
}

func Up(bar *int) {
  *bar = *bar + 1
}

Answer:
2
1

And now - wrapped #defer with a func:

package main

import (
  "fmt"
)

func main() {
  foo := 1
  defer func() {
    fmt.Println(foo)
  }()
  Up(&foo)
  defer func() {
    fmt.Println(foo)
  }()
}

func Up(bar *int) {
  *bar = *bar + 1
}

Answer:
2
2

Comments (0)

    Reply on Telegram