Задать вопрос
@vondoglok

Не понимаю как работает цикл?

Я пытался выполнить легкое домашнее задание:
Напишите функцию, которая принимает указатель на int. Функция должна проверить, является ли переданный указатель nil. Если это так, функция должна вывести сообщение "Указатель пуст", в противном случае увеличить значение переменной на 1.
Вот мое решение:
package main

import "fmt"

func main() {
	a := 0
	fmt.Scanln(&a)
	checkNil(&a)
}
func checkNil(v *int) {
	if v != nil {
		fmt.Println("Пустая переменная")
	} else {
		*v++
		fmt.Println(*v)
	}
}


Если переменной присвоить значение 1,2,3,4... то все работает, переменная увеличивается на единицу, а если присвоить 0, то все равно переменная увеличивается, и выводится на экран 1, но никак не Пустая переменная:
0
1

Process finished with the exit code 0
Я посмотрел решения других людей, все написано также как у меня, я даже копировал решения и все равно не получалось, но никто не указывал значение 0.
Подскажите пожалуйста, в чем моя ошибка? Как исправить?
  • Вопрос задан
  • 132 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
В вашей задаче нет циклов, почему в вопросе упоминается цикл?

У вас main написан так, что передаваевая в checkNil переменная никогда не будет nil.

Внутри checkNil вы перепутали равенство с неравенством. v != nil значит "v не равно nil", а у вас в этом случае выводится, что переменная пустая, хотя должно быть наоборот.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы