Условие оператора if не проверяет значение nil интерфейса

Я пытаюсь подтвердить в if условие, если значение интерфейса nil и это не так, я напечатал переменную и отображает <nil> что должно быть правдой и войти в if условие выписки.

У меня есть предопределенная карта под названием:

schema := make(map[interface{}]interface{})

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

schema := make(map[interface{}]interface{})
v := reflect.ValueOf(structureType)

for i := 0; i < v.NumField(); i++ {
    schema[v.Type().Field(i).Name] = v.Field(i).Interface()
}

Затем я пытаюсь проверить, если целое число пусто:

if value, exist := schema["Age"]; exist {
    fmt.Println(value)
    if value == nil {  // This condition is not being true even if the value = nil
        logSyntaxWriter(LogFileName, "Age field is empty.", yamlFileDirectory)
    }
}

Почему условие не выполняется, даже если value переменная nil?

0 ответов

Другие вопросы по тегам