如何在 Golang 中使用反射?

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

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

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

示例 1 – reflect.TypeOf()

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

考虑下面显示的代码,我们将在其中使用此函数。

package main

import (

   "fmt"

   "reflect"

)

func main() {

   var name string = "nhooo"

   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 = "nhooo"

   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命令,我们将在终端中得到以下输出。

nhooo

[1 2 3 4 5]

989

示例 3

我们还可以找到struct 中的字段数。考虑下面显示的代码。

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

以上是 如何在 Golang 中使用反射? 的全部内容, 来源链接: utcz.com/z/353542.html

回到顶部