Нулевой указатель в Go
Указатель можно объявить, но пока не записывать
в него адрес. Тогда он остаётся в нулевом
состоянии. Для указателей это значение nil:
адреса нет, идти некуда.
Объявим указатель на число и сравним его
с nil:
package main
import "fmt"
func main() {
var ptr *int
fmt.Println(ptr == nil) // выведет true
}
После записи адреса переменной сравнение
с nil даёт ложь:
package main
import "fmt"
func main() {
num := 3
ptr := &num
fmt.Println(ptr == nil) // выведет false
}
Чтение или запись через * при nil
программу останавливает. Такой фрагмент нельзя
запускать как рабочий пример:
var ptr *int
fmt.Println(*ptr)
Перед доступом к значению указатель нужно направить на существующую переменную через адрес или присвоить другой уже готовый указатель.
Дан код:
var link *int
Выведите, равен ли link nil.
Создайте num со значением 2,
запишите адрес в ptr и выведите,
равен ли ptr nil.
Скажите, можно ли сразу вывести значение по объявленному без адреса указателю на число.