reflection - 如何使用反射在golang中创建具有给定名称(字符串)的数组

标签 reflection go

我想在 golang 中创建带有名称的数组,但是我遇到了一些错误 这是我的代码 包主

import (
    "fmt"
    "reflect"
)

type My struct{
    Name string
    Id int
}

func main() {
    my := &My{}
    myType := reflect.TypeOf(my)
    fmt.Println(myType)
    //v := reflect.New(myType).Elem().Interface()

    // I want to make array  with My
    //a := make([](myType.(type),0)  //can compile
    //a := make([]v.(type),0)  ////can compile
    fmt.Println(a)
}

最佳答案

我相信这就是您要找的:

 slice := reflect.MakeSlice(reflect.SliceOf(myType), 0, 0).Interface()

工作示例:

作为旁注,在大多数情况下,零 slice 比容量为零的 slice 更合适。如果你想要一个 nil slice ,可以这样做:

 slice := reflect.Zero(reflect.SliceOf(myType)).Interface()

关于reflection - 如何使用反射在golang中创建具有给定名称(字符串)的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18604345/

相关文章:

Go闭包变量作用域

c# - 除了反射之外,还有什么方法可以解决 WPF 对 GC.Collect(2) 的调用?

java - 以编程方式获取 WebView 实现

java - 如何通过反射找出一个字段是否是一个类型的实例?

json - 仅解码已批准的字段

go - emacs 中 golang 的自动完成

Java 相当于 javascript 中的返回函数

dictionary - 如何在Go中使用空结构值制作 map

json - 使用 Golang 处理类似 Python 的 json

go - 击中50,000个并行请求的网址