Golang 如何使用反射

Golang 如何使用反射

Golang中的 反射 是关于了解我们在运行时处理的数据的数据类型。在某些情况下,我们经常想知道我们在运行时得到的某个变量的数据类型或类似情况。

反射 的帮助下,我们可以在Golang中提取任何数据类型的类型、值和种类。

在这篇文章中,我们将探讨在反射中使用的不同的第三方函数。

例子1 – reflect.TypeOf()

它用于返回 反射 类型的值 。 简单地说,它用来知道数据类型是什么。

请看下面的代码,我们将使用这个函数。

package main

import (
   "fmt"
   "reflect"
)

func main() {
   var name string = "TutorialsPoint"

   fmt.Println(reflect.TypeOf(name))

   sl := []int{1, 2, 3, 4, 5}

   fmt.Println(reflect.TypeOf(sl))

   num := 989

   fmt.Println(reflect.TypeOf(num))
}

输出

如果我们在上面的命令上运行 go run main.go ,我们将在终端得到以下输出。

string
[]int
int

例2 – reflect.ValueOf()

当我们想找到变量的值时,它就会被使用。请看下面的代码,我们将利用这个函数。

package main

import (
   "fmt"
   "reflect"
)

func main() {
   var name string = "TutorialsPoint"

   fmt.Println(reflect.ValueOf(name))

   sl := []int{1, 2, 3, 4, 5}

   fmt.Println(reflect.ValueOf(sl))

   num := 989

   fmt.Println(reflect.ValueOf(num))
}

输出

如果我们在上面的命令上运行go run main.go ,我们将在终端得到以下输出。

TutorialsPoint
[1 2 3 4 5]
989

例3

我们还可以找到 结构 中的字段数 。 请看下面的代码。

package main

import (
   "fmt"
   "reflect"
)

type Person struct {
   age          int
   name          string
   number       float64
   isMarries    bool
}

func main() {
   p := Person{10, "ABCD", 15.20, true}
   typeT := reflect.TypeOf(p)
   fmt.Println(typeT.NumField())
}

输出

如果我们在上面的命令上运行 go run main.go ,我们将在终端得到以下输出。

4

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程