Функция Reflect.IsNil () в Golang с примерами

Опубликовано: 12 Апреля, 2022

Язык Go предоставляет встроенную поддержку реализации отражения во время выполнения и позволяет программе манипулировать объектами произвольных типов с помощью пакета отражения. Функция отражения.IsNil () в Golang используется для проверки того, равен ли его аргумент v нулю. Аргумент должен быть значением chan, func, interface, map, указателем или срезом; если это не так, ИсНил паникует.

Примечание. IsNil не всегда эквивалентно обычному сравнению с nil в Go. Например, если v был создан путем вызова ValueOf с неинициализированной интерфейсной переменной i, i == nil будет истинным, но v.IsNil запаникует , поскольку v будет нулевым значением.

Syntax:

func (v Value) IsNil() bool

Parameters: This function does not accept any parameter.

Return Value: This function returns whether its argument v is nil or not.

Примеры ниже иллюстрируют использование вышеуказанного метода в Golang:

Example 1:

// Golang program to illustrate
// reflect.IsNil() Function
  
package main
  
import (
    "bytes"
    "fmt"
)
  
// Main function
func main() {
    var body *bytes.Buffer
    fmt.Printf("main(): body == nil ? %t ", body == nil)
}

Выход:

main (): body == nil? правда

Example 2:

// Golang program to illustrate
// reflect.IsNil() Function 
   
package main
   
import (
    "fmt"
    "reflect"
)
   
func isNilFixed(i interface{}) bool {
   if i == nil {
      return true
   }
   switch reflect.TypeOf(i).Kind() {
   case reflect.Ptr, reflect.Map, reflect.Array, reflect.Chan, reflect.Slice:
    //use of IsNil method
    return reflect.ValueOf(i).IsNil()
   }
   return false
}
  
// Main function 
func main() {
    t := reflect.TypeOf(5)
       
    arr := reflect.ArrayOf(4, t)
    inst := reflect.New(arr).Interface().(*[4]int)
   
    for i := 1; i <= 4; i++ {
        inst[i-1] = i*i
    }
   
    fmt.Println(isNilFixed(inst))
}

Выход:

ложный

Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.

Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.