Функция Reflect.IsNil () в Golang с примерами
Язык Go предоставляет встроенную поддержку реализации отражения во время выполнения и позволяет программе манипулировать объектами произвольных типов с помощью пакета отражения. Функция отражения.IsNil () в Golang используется для проверки того, равен ли его аргумент v нулю. Аргумент должен быть значением chan, func, interface, map, указателем или срезом; если это не так, ИсНил паникует.
Примечание. IsNil не всегда эквивалентно обычному сравнению с nil в Go. Например, если v был создан путем вызова ValueOf с неинициализированной интерфейсной переменной i, i == nil будет истинным, но v.IsNil запаникует , поскольку v будет нулевым значением.
Syntax:
func (v Value) IsNil() boolParameters: 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. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.