【发布时间】:2016-12-31 18:16:24
【问题描述】:
我有一个数组数组的数据。
data := [][]int{{1,2,3}, {4,5,6}}
和结构
type A struct { I, J, K int }
现在我想使用数据中的每个数组为结构 A 创建实例运行时,我该如何实现?如果反射是一种方式,那么告诉你如何?
这只是我想给你看的一个例子。但是,假设结构 A 包含从 A 到 Z 的 26 个类型为 int 的字段,并且我有 100 个数据切片,我可以从中创建/初始化我的结构 A,那么在结构上不使用点表示法而只是循环怎么可能?覆盖字段索引并从切片数据中分配该字段?
package main
import (
"fmt"
)
type A struct {
I, J, K int
}
func main() {
data := [][]int{
{1, 2, 3},
{4, 3, 2},
}
var a A
// create instance of type A with params
// initialization for each array in data
fmt.Println(a)
}
请通过此链接帮助我:https://play.golang.org/p/rYuoajn5Ln
【问题讨论】:
-
我看到了这个:stackoverflow.com/questions/7850140/…,但我不明白。
-
您只是在寻找一个 for 循环吗? play.golang.org/p/88GiQuQyBP(另外,这些是切片而不是数组,在 Go 中是不同的)
-
哦,对不起,这是个错误,是的,它们是切片,但假设我在结构中有 50 个字段和 100 个包含我的结构数据的切片,那么我该如何实现呢?
-
您的意思是要通过反射设置字段? play.golang.org/p/QzHvhMnput
-
@JimB 这正是我想要的!!多谢兄弟。但我有一个问题,哪一个是这样做的好方法?通过反射还是通过硬编码分配?看到问这个背后的原因是我有 40 个字段的结构和 1000 个包含结构数据的切片,我需要好的解决方案。
标签: go struct initialization runtime