📜  Golang 中的reflect.ArrayOf()函数示例(1)

📅  最后修改于: 2023-12-03 15:01:01.905000             🧑  作者: Mango

Golang 中的 reflect.ArrayOf() 函数

在 Golang 的反射库中,reflect 包提供了大量函数和类型来支持程序的运行时反射。其中,reflect.ArrayOf() 函数用于创建一个指定长度和元素类型的数组类型。

函数签名

reflect.ArrayOf(len int, elem reflect.Type) reflect.Type

  • len:表示数组的长度,必须是一个非负整数。
  • elem:表示数组中每个元素的类型,必须是一个 reflect.Type 类型。

该函数返回一个表示指定数组类型的 reflect.Type 值。

示例
package main

import (
    "fmt"
    "reflect"
)

func main() {
    // 创建一个含有 5 个 int 元素的数组类型
    var arrType reflect.Type = reflect.ArrayOf(5, reflect.TypeOf(int(0)))

    // 输出数组类型的名称和元素类型
    fmt.Println(arrType.Name(), arrType.Elem().Name())
}

以上代码输出结果为:

[5]int int
解析
  • 在上述示例中,reflect.ArrayOf() 函数创建了一个长度为 5,元素类型为 int 的数组类型,使用 reflect.TypeOf() 函数得到对应的 reflect.Type 值。
  • 最后通过 reflect.Type 的 Name() 方法和 Elem() 方法获取到数组类型的名称和元素类型的名称,分别为 “[5]int” 和 “int”。
注意事项
  • 如果数组长度为 0,则会返回一个空数组类型(即没有元素类型)。
  • 如果 elem 参数不是一个有效的元素类型,则该函数会 panic。