Как отличить отсутствие значения от zero value?

Middle
104 просмотров
AFK Offer AI

Проблема: 0 для int — это и zero value, и валидное значение. Решения: использовать указатель (*int — nil означает отсутствие), обернуть в структуру с полем Valid (как sql.NullInt64), или использовать comma-ok паттерн (map lookup). Для JSON — pointer поля: если nil, значит не пришло. Выбор зависит от контекста, указатели самый простой вариант.

Следующий вопрос

Что выведет: s := make([]int, 0, 5); s = append(s, 1,2,3); s2 := s[1:2]; fmt.Println(cap(s2))?