英文:
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)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论