Функция new

Функция new выделяет память для значения указанного типа, инициализирует его нулевым значением и возвращает указатель на это значение. Первым и единственным параметром функция принимает тип, для которого нужно выделить память.

Синтаксис

gonew(T)

Пример

Давайте выделим память для типа int и выведем полученный указатель:

gopackage main

import "fmt"

func main() {
  p := new(int)
  fmt.Println(p)
}

Результат выполнения кода:

go"0xc00001a0b0"

Пример

Давайте выделим память для типа int и разыменуем указатель, чтобы увидеть нулевое значение:

gopackage main

import "fmt"

func main() {
  p := new(int)
  fmt.Println(*p)
}

Результат выполнения кода:

go0

Пример

Давайте выделим память для типа string и изменим значение по указателю:

gopackage main

import "fmt"

func main() {
  p := new(string)
  *p = "abcde"
  fmt.Println(*p)
}

Результат выполнения кода:

go"abcde"

Пример

Давайте выделим память для слайса и убедимся, что он инициализируется нулевым значением:

gopackage main

import "fmt"

func main() {
  p := new([]string)
  fmt.Println(*p)
}

Результат выполнения кода:

go[]

Смотрите также

  • функцию make,
    которая выделяет память и инициализирует слайсы, карты и каналы
  • тип pointer,
    который хранит адрес значения в памяти
  • тип slice,
    который представляет динамический массив
  • тип map,
    который представляет коллекцию ключей и значений