我有一些 TCP 连接,它为我返回了一些数据。我也有一个代表这些数据的结构。
type Item struct {
A int32
B int32
}
Item
支持Unpacker
接口
func (item *Item) Unpack(data []int32) {
item.A = data[0]
item.B = data[1]
return
}
type Unpacker interface {
Unpack([]int32)
}
所以我从网络收到了一些代表一堆项目的数据。现在我想将我的结构传递给函数,我想取回一片充满数据的结构:
func find(packet [][]int32, responseItem Unpacker) (items []Unpacker) {
items = make([]Unpacker, len(packet))
for i, data := range(packet) {
responseItem.Unpack(data)
items[i] = responseItem
}
return
}
当然,在这种情况下,我有一个切片,其中包含许多相同的项目(指向同一项目的指针)。但我想得到不同的物品和
items[i] = *responseItem
在我的情况下不起作用。
这是游乐场的链接:http ://play.golang.org/p/RP4ryxoG2I
我相信我不明白 Go 的工作原理(这是我第一次使用 Go)。还需要注意:如果可能的话,我不想在这里使用反射。