这个问题已经有了答案:
Type converting slices of interfaces
5答
最基本的问题是我得到了一个[]*interface{}
,我需要把它转换成[]*MyStruct
。
我在尝试这样的方法,但速度不快。在我的例子中,在示例代码中,lines
片段包含映射,因此硬转换不起作用。
var lines []*interface{}
var results []*MyStruct
for _, s := range lines {
if s != nil {
someJson, err := json.Marshal(s)
if err != nil {
continue
}
v := MyStruct{}
if err := json.Unmarshal(someJson, &v); err != nil {
continue
}
results = append(results, &v)
}
}
最佳答案
如果必须使用json,我看到的唯一优化是预先分配结果,这样append
就不必在“每次调用”时都这样做(不太可能,依赖于实现,但往往不止一次)
results := make([]*MyStruct, 0, len(lines))
关于go - 将接口(interface)指针片转换为结构指针片的最有效方法是哪种? ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57834312/