Instance an array from a type in go

huangapple go评论84阅读模式
英文:

Instance an array from a type in go

问题

你可以使用reflect.New函数来实例化一个给定类型的数组。下面是一个示例代码:

import "reflect"

func newInstance(obj interface{}) interface{} {
    objType := reflect.TypeOf(obj)
    arrayType := reflect.ArrayOf(10, objType) // 假设数组长度为10
    newArray := reflect.New(arrayType).Elem().Interface()
    return newArray
}

func main() {
    var obj int
    newArray := newInstance(obj)
    // 使用newInstance函数实例化一个int类型的数组
    // newArray的类型是[]int
}

在上面的示例中,reflect.ArrayOf函数用于创建一个指定长度和元素类型的数组类型。然后,使用reflect.New函数创建一个新的数组实例,并使用Elem方法获取数组的可写入值。最后,通过调用Interface方法将可写入值转换为接口类型,并返回实例化的数组。

英文:

How can I instance an array with a given type?

I get the type this way:

type := reflect.ValueOf(obj)

But I don't know how to get an instance of an array with this type

答案1

得分: 3

使用reflect.MakeSlice来实现:

type := reflect.ValueOf(obj)
reflectSlice := reflect.MakeSlice(type, sliceLength, sliceCapacity)
英文:

Use reflect.MakeSlice for that:

type := reflect.ValueOf(obj)
reflectSlice := reflect.MakeSlice(type, sliceLength, sliceCapacity)

huangapple
  • 本文由 发表于 2015年2月16日 21:18:30
  • 转载请务必保留本文链接:https://go.coder-hub.com/28542330.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定