Назад к задачам
Junior — Senior
65

Определение выводимых значений и размера структуры при передаче её по указателю

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Нужно понять, какие данные будут напечатаны до вызова функции mutatePtr, что выведет сама функция и как изменятся значения после её выполнения. Кроме того, требуется узнать, сколько байтов занимает объявленная структура в памяти.

type st struct {
  // 4 ??? sizeof
  p1 bool
  p2 int
  p3 bool
}

// ptr
func main() {
  myStr := st{}

  fmt.Println(myStr) // 1 ???

  mutatePtr(&myStr)

  fmt.Println(myStr) // 3 ???

  fmt.Println(unsafe.Sizeof(myStr))
}

func mutatePtr(in *st) {
  in = &st{
    p1: true,
    p2: 666,
    p3: false,
  }

  fmt.Println("in mutatePtr:", in) // 2
}