【发布时间】:2018-01-27 02:16:00
【问题描述】:
我有一个递归数据结构,可以包含几种不同类型的数据:
type Data interface{
// Some methods
}
type Pair struct { // implements Data
fst Data
snd Data
}
type Number float64 // implements Data
现在我想将Pairs 链扁平化为[]Data。但是,fst 字段中的Data 不应该被展平,只有snd 中的数据应该被展平。例如:
chain := Pair{Number(1.0), Pair{Number(2.0), Pair{Number(3.0), nil}}}
chain2 := Pair{Pair{Number(1.0), Number(4.0)}, Pair{Number(2.0), Pair{Number(3.0), nil}}}
变成:
data := []Data{Number(1.0), Number(2.0), Number(3.0)}
data2 := []Data{Pair{Number(1.0), Number(4.0)}, Number(2.0), Number(3.0)}
我的幼稚做法是:
var data []Data
chain := Pair{Number(1.0), Pair{Number(2.0), Pair{Number(3.0), nil}}}
for chain != nil {
data = append(data, chain.fst)
chain = chain.snd
}
是否有更有效的方法可以将变量chain 中的数据结构扁平化为[]Data 数组?
【问题讨论】:
标签: arrays go data-structures