РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
21 of 1593 menu

nil в Go

nil в Go - это предопределенный идентификатор, который обозначает нулевое значение для указателей, интерфейсов, слайсов, карт, каналов и функций. В отличие от других языков, где null или None могут быть присвоены любым типам, в Go nil не является типом, а представляет собой значение, которое можно присвоить только переменным определенных типов. При попытке присвоить nil переменной базового типа, например int или string, компилятор выдаст ошибку.

Синтаксис

var ptr *int = nil var slice []int = nil var iface interface{} = nil

Пример

Создадим указатель на целое число и присвоим ему значение nil. Затем проверим, равен ли он nil:

package main import "fmt" func main() { var p *int = nil if p == nil { fmt.Println("p is nil") } }

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

"p is nil"

Пример

Попробуем разыменовать указатель, содержащий nil, что приведет к панике во время выполнения программы:

package main import "fmt" func main() { var p *int = nil fmt.Println(*p) // panic: runtime error: invalid memory address or nil pointer dereference }

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

"panic: runtime error: invalid memory address or nil pointer dereference"

Пример

Проверим, является ли пустой слайс равным nil. Обратите внимание, что пустой слайс не равен nil:

package main import "fmt" func main() { var s1 []int = nil s2 := []int{} fmt.Println(s1 == nil) // true fmt.Println(s2 == nil) // false }

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

"true" "false"

Пример

Проверим, является ли пустая карта равной nil. Как и в случае со слайсами, пустая карта не равна nil:

package main import "fmt" func main() { var m1 map[string]int = nil m2 := map[string]int{} fmt.Println(m1 == nil) // true fmt.Println(m2 == nil) // false }

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

"true" "false"

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

  • оператор if,
    который используется для проверки условий
  • оператор var,
    который объявляет переменные с нулевыми значениями
  • тип type,
    который определяет пользовательские типы
  • ключевое слово func,
    которое объявляет функции и методы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить