gpt4 book ai didi

go - 如何制作运行时指定类型的元素数组

转载 作者:IT王子 更新时间:2023-10-29 02:26:10 26 4
gpt4 key购买 nike

我正在尝试创建一个元素数组,其类型仅在运行时已知(pkg API 获取 json 中的元素并转换为结构)。我有一个类似下面的辅助函数,它将一个接口(interface)作为参数,并在调用 make 时尝试获取接口(interface)的类型。

golang 编译器似乎不喜欢它。

var whatAmI = func(i interface{}) { 
a := reflect.TypeOf(i)

//var typ reflect.Type = a

b := make (a, 10) //10 elem with type of i

//b := new (typ)
fmt.Printf ("a: %v b: %v", a, b)
}

prog.go:21:14: a 不是类型

我尝试了反射的各种组合,但到目前为止没有帮助。在我看来,这可能是一个常见的问题。我该如何解决/解决这个问题?

最佳答案

在给定元素类型 v 的值的情况下获取 slice 的类型:

sliceType := reflect.SliceOf(reflect.TypeOf(v))

创建一个具有长度和容量的 slice (此处均为 10)。

slice:= reflect.MakeSlice(sliceType, 10, 10)

根据您的操作,您可能希望通过调用 reflect.Value 上的 Interface() 来获取实际的 slice 值:

s := slice.Interface()

Run it on the playground .

关于go - 如何制作运行时指定类型的元素数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52396248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com